• ベストアンサー

ワイルドカードで指定してファイル削除

あるフォルダの中の「abc」で始まるExcelファイルを全て削除したいです。 ※「abc」で始まるExcelファイルが無ければ何もしない FileExistsでワイルドカードは使えないのはわかっているのですが、 何か良い代替案は有りますでしょうか。 try~catchなど試してみましたが、期待通りの動作をしてくれないため、 ご教示お願いいたします。 function Delete(sTargetFolder){ var oFilesys = WScript.CreateObject("Scripting.FileSystemObject"); var str str = sTargetFolder + "\\abc*.xls"; if(oFilesys.FileExists(str)==true){ oFilesys.DeleteFile(str.true); }

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.4

何がどう上手くいかないんでしょ? function Delete(sTargetFolder){     var str = "CMD.exe /c DEL "          + sTargetFolder          + "\\abc*.xls";     var shl = new ActiveXObject("WScript.Shell")     shl.Run(str,0,true); } これでもダメですかね?

kk422kw319
質問者

お礼

お礼が遅くなりすみません! 何がどううまくいかないかもきちんと書けずすみませんでした。 記していただいたコードを参考に無事成功できました。 とても勉強になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

>if(fc.item().Name=="\\abc*.xls"){ これは無茶。\ も * もファイル名には現れませんし。 正規表現を使うか、substringで先頭3文字が"abc"で、末尾4文字が".xls"で見るか。 他の方の書かれたCMD.EXEに任せる方が楽そうですが。

kk422kw319
質問者

お礼

お礼が遅くなりすみません! ファイル指定方の面でも不勉強でしたが、大変参考になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

シェルにやってもらうってのは? var shl = new ActiveXObject("WScript.Shell") shl.Run("CMD.exe /c DEL \\abc*.xls",0,true); http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

kk422kw319
質問者

補足

ありがとうございます。 シェルでも考えてみたのですが、まだうまく行かないので、 継続して考えてみます。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

filesコレクションを使って、そのフォルダ内のすべてのファイルについて繰り返して、条件にあったファイルを消せばいいと思います。

kk422kw319
質問者

補足

アドバイスありがとうございます。 var oFilesys = WScript.CreateObject("Scripting.FileSystemObject"); var f = oFilesys.GetFolder(sTargetFolder); var fc = new Enumerator(f.Files); for(;!fc.atEnd(); fc.moveNext()){ if(fc.item().Name=="\\abc*.xls"){ fc.DeleteFile();} } 上記のように考えてみたのですが、うまく動きません…。

すると、全ての回答が全文表示されます。

関連するQ&A