• 締切済み

vbsでD&Dで同名ファイルの違う拡張子のファイルだけを削除したい。

vbsでD&Dで同名ファイルの違う拡張子のファイルだけを削除したい。 出来れば複数のファイルD&D出来ると有り難いです。 demo1.txt demo2.txt この二つを作成したvbsにドロップして 指定したフォルダーの中から指定した拡張子例えばdoc wmv avi (指定フォルダーの中) demo1.doc demo2.wmv demo2.avi これらのファイルがあった場合削除すると言う物を作りたいのですがどんなふうに組んだら良いのでしょうか? 簡単に言えば ドロップするファイルは削除しないで指定しているフォルダーの中に有る同じ名前の違う拡張子のファイルを削除すると言うものを作りたいのです。 特にvbsで必ずと言う訳ではなくbatも可能なら平気なので何方かお力下さい。

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

>ドロップでも動作しない  私の環境では、 1)#1 さんがお示しの スクリプト を「~~.bat」で保存し、 2)エクスプローラ から「~~.bat」に、 ファイル を1つ「D&D」すると、 3)「D&D」された ファイル 以外は削除されました。  ただし、複数のファイルを「D&D」すると、全て削除されてしまいました。  sakuraip さんがお書きの「D&D」とか「vbsにドロップ」というのは、そういう意味ではないのでしょうか?  余り スマート ではありませんが、VBS ファイル でしたら、こんな感じでできました。 Set objArgs = WScript.Arguments For I = 0 To objArgs.Count - 1 objArgsName = objArgsName & objArgs(I) & " " Next Set FSO = CreateObject("Scripting.FileSystemObject") Set myFol = FSO.GetFolder(FSO.GetParentFolderName(objArgs(0))) For Each myFile In myFol.Files If InStr(objArgsName, myFile.Name) = 0 _ And FSO.GetBaseName(myFile) = FSO.GetBaseName(objArgs(0)) Then myFile.Delete End If Next

sakuraip
質問者

お礼

ありがとうございます。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>最小限のbat作成 ドロップでも動作しないbatですので (1) 最小限とは? (2) 何をドロップして、 (3) 「動作しない」というのは具体的にどういう現象を以てそのように表現しているのですか?

sakuraip
質問者

補足

別スレで質問していて分かったのですが%1のパスファイルが受け付けない設定になってしまってるらしく機能しなかったみたいです>< 申し訳ないです。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>ミニマムな動作してみたんですが動かないんですが >何が悪いんでしょうか? 何をどうして、どうなったんでしょう? 他人にもわかるように書いてください。

sakuraip
質問者

補足

>何をどうして、どうなったんでしょう? そのままです。 最小限のbat作成 ドロップでも動作しないbatですので どうすれば動くんですか?と言うだけの事ですが・・・

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

バッチスクリプトで。 :LOOP if "%~1" == "" exit /b for %%F in ("%~dpn1.*") do if not "%%~F" == "%~1" del "%%~F" shift goto :LOOP %~dpn1 が引数のファイル名の拡張子を除いた部分になります。

sakuraip
質問者

補足

お手数ですいません ミニマムな動作してみたんですが動かないんですが 何が悪いんでしょうか? この手の物の詳しく無いので申し訳ないです。