|
>フォルダを作成して、フォルダを開くだけで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フォルダに入れて、納品フォルダの圧縮時には、このスクリプト経由でdescto
p.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",sFold
erPath, "", 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
|
|