|
>フォルダを作成して、フォルダを開くだけでdesktop.iniが作られるようなことは通常ではないはずなので、何か別の理由があるのかもしれないです。
>何か別のユーティリティ的なアプリが関係していそうな気もしますが、はたしてそういうものがあるのかどうかわからないです。
>
>desktop.iniをまとめて削除するとしたら、コマンドプロンプトかバッチファイルで、該当の場所で
>
>del /S desktop.ini
>
>とするのが手っ取り早いと思います。
>間違えて別の場所で実行するとまずいことになりかねないので、慎重に行ったほうがいいと思います。
>例えばユーザープロファイルのフォルダで実行してしまうと"ドキュメント"とか"ダウンロード"といったアイコンや、日本語表示名が無くなってしまったりします。
>
>秀丸ファイラーClassicでは自動でスクリプトを実行するのは、[ツール]→[オプション]→[上級者向け]→[スクリプト]のところにありますが、フォルダを作成したときに実行とか、フォルダを開いたときに実行は無いです。
>ファイル一覧で選択を変えたときのものしかないですが、これでも一応近いことはできます。
>
>//例:test.js
>targetDir="C:\\ForDeleteDesktopIni";
>if(getDirectory().toLowerCase()==targetDir.toLowerCase()){
> new ActiveXObject("Shell.Application").ShellExecute("cmd.exe"
> , "/K del /S desktop.ini & exit"
> , targetDir
> , ""
> , 0 //非表示
> );
>}
>
>実行がかなり頻繁に行われてしまうので、たまにしか見ない場所のためにするのは、そういうスクリプトを実行していたこと自体を忘れてしまいそうで心配ではあります。
>
>検索枠で、desktop.iniを検索して、結果を全て選択して削除するのが、事前に場所もわかってまとめてできるので安心です。
ご返信ありがとうございます。
「del /S desktop.ini」は良いですね。
ただ言われる通り、意図しないイベントで頻繁にスクリプトが動くのは怖いですね。
考えた結果、教えて頂いたスクリプト案をもとにVBScriptで「圧縮 (zip 形式) フォルダー(納品用としてdesctopIni削除).vbs」というVBScriptファイルを作り、それをSendToフォルダに入れて、納品フォルダの圧縮時には、このスクリプト経由でdesctop.iniを削除&フォルダ圧縮することにしました。
納品時には必ずSendToにある「圧縮 (zip 形式) フォルダー」というWindows標準の圧縮ツールを使っていたので…。
getDirectory()など秀丸ファイラー特有のメソッドのメソッドの書かれたスクリプトファイルは、SendTo経由(右クリックメニュー ⇒ 送る ⇒ スクリプト指定)だと特有メソッドでエラーになると思ったので、頂いたスクリプト案から秀丸ファイラー特有のメソッドがないVBScriptに書き換えて使うことにしました。
何はともあれ、助かりました。
ありがとうございます。
折角なのでSendToに配置したVBScripの中身を記載しておきます。
/////////////////////////////////////////////
Option Explicit
'メイン処理の定義
Sub Main()
Dim fso, shell
Dim sFolderPath, sZipFilePath
Dim i
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = Wscript.CreateObject("Shell.Application")
'コマンドライン引数のチェック
If Wscript.Arguments.Count <> 1 Then
WScript.Echo "コマンドライン引数には1つのフォルダを指定してください"
Exit Sub
End If
' フォルダの取得と存在チェック
For i = 0 To Wscript.Arguments.Count-1
sFolderPath = Wscript.Arguments(i)
If fso.FolderExists(sFolderPath) = False Then
WScript.Echo "コマンドライン引数にはフォルダを指定してください"
Exit Sub
End If
Next
' desktop.iniを削除
shell.ShellExecute "cmd.exe", "/K del desktop.ini /F /S /A:H & exit",sFolderPath, "", 0
'以下のZIP圧縮処理は、Lhacaなどの圧縮ツールを使ったほうが確実性が高いかもしれないけど、固定パスを書くのも嫌なので悩ましい...
'ZIPファイルを作成
sZipFilePath = sFolderPath & ".zip"
With fso.CreateTextFile(sZipFilePath, True)
.Write "PK" & Chr(5) & Chr(6) & String(18,0)
.Close
End With
'対象フォルダを丸ごとZIPファイルにコピー(圧縮)
shell.NameSpace(sZipFilePath).CopyHere(sFolderPath)
Do While i = 0
WScript.Sleep(250)
i = shell.NameSpace(sZipFilePath).Items.count
Loop
End Sub
'メイン処理の実行
Call Main
|
|