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は作られる
と同時に自動で削除みたいなことはできないですか?
もしくは特定フォルダ以下にあるフォルダを開くとスクリプトが走り自動で削除する
とか…


この理由ですが、不定期に発生する特定顧客への仕事の納品物の際にフォルダごとzi
p圧縮したファイルを仕事先に送るのですが、何度か「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フォルダに入れて、納品フォルダの圧縮時には、このスクリプト経由で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

[ ]