[ 新規に投稿する ]

desktop iniを勝手に作られないようにしたいNo.10847
hiro さん 23/08/29 11:51 [ コメントを投稿する ]
  いつも便利に使わせていただいています。

さて、秀丸ファイラーでフォルダを作り、開くと「desktop ini」というファイルが自動で作られます。

このdesktop iniファイルを特定フォルダ以下では自動的に作られないようにしたいのですが、何か方法はあるでしょうか?

※念のためですが、desktop iniファイルを非表示にしたいのではなく、作られないようにしたいという話です。
[ ]
RE:10847 desktop iniを勝手に作られないようにしたいNo.10848
秀丸担当 さん 23/08/29 13:04 [ コメントを投稿する ]
  desktop.iniは、フォルダのプロパティでアイコンを指定したときなど、作られることがあるようです。
秀丸ファイラーClassicとしては作っていないので、作られないようにすることはできないです。

やるとしたら削除か非表示ということになってしまいますが、隠し属性とは別に、常時非表示フィルタを設定しておくと常に非表示にする方法もあります。
[ ]
RE:10848 desktop iniを勝手に作られないようにしたいNo.10850
hiro さん 23/08/31 17:30 [ コメントを投稿する ]
  >desktop.iniは、フォルダのプロパティでアイコンを指定したときなど、作られることがあるようです。
>秀丸ファイラーClassicとしては作っていないので、作られないようにすることはできないです。
>
>やるとしたら削除か非表示ということになってしまいますが、隠し属性とは別に、常時非表示フィルタを設定しておくと常に非表示にする方法もあります。

ご返信ありがとうございます。

以前からWindowsかエクスプローラかがdesktop.iniを勝手に作らるのはわかっていましたが、スクリプトなどを使って特定フォルダ―以下にあるdesktop.iniは作られると同時に自動で削除みたいなことはできないですか?
もしくは特定フォルダ以下にあるフォルダを開くとスクリプトが走り自動で削除するとか…


この理由ですが、不定期に発生する特定顧客への仕事の納品物の際にフォルダごとzip圧縮したファイルを仕事先に送るのですが、何度か「desktop.iniを削除してくれ」と言われています。
傾向的にはフォルダを作り、フォルダを開くと同時にdesktop.iniが作られることが多いようですが、正確なファイル作成タイミングは不明です。
できるだけ納品前には手動で削除して、圧縮したZipファイル内もチェックしてはいるものの、自分でdesktop.iniを作っているわけでもないため時々desktop.iniの存在自体を忘れてしまうことがあります。
また、不定期な仕事のくせに求められる資料のバリエーションが豊富な納品なので、毎回desktop.iniを手動で消すという余計な作業を組み入れると別の大切なことを忘れてしまいそうです。

自動的に削除する仕組みを構築できると嬉しいのですが…。
[ ]
RE:10850 desktop iniを勝手に作られないようにしたいNo.10851
秀丸担当 さん 23/09/01 11:21 [ コメントを投稿する ]
  フォルダを作成して、フォルダを開くだけで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を検索して、結果を全て選択して削除するのが、事前に場所もわかってまとめてできるので安心です。
[ ]
RE:10851 desktop iniを勝手に作られないようにしたいNo.10852
hiro さん 23/09/01 21:15 [ コメントを投稿する ]
  >フォルダを作成して、フォルダを開くだけで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
[ ]

[ 新規に投稿する ]