• ベストアンサー

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

あるフォルダの中の「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/1415)
回答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% (4851/10265)
回答No.3

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

kk422kw319
質問者

お礼

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

  • nda23
  • ベストアンサー率54% (777/1415)
回答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% (4851/10265)
回答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

  • VBSで指定したフォルダー内のファイルを書き出さないようにする

    あるフォルダ以下のファイル名を出力ファイル、f.name.txtに書き出すのですが "新しいフォルダ"というフォルダのなかにあるファイルは書き出さないようにしたいのですが、意に反してフォルダー内の全てのファイル名を書き出してしまいます。どこがおかしいのでしょう? ********************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name FolderCheck=Folder & "\" & "新しいフォルダ" If Folder <> FolderCheck Then abc.Write Folder & "\" & Fname & vbCrLf End If Next For Each Subfolder in Folder.SubFolders 'Foler内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • 「Scripting.FileSystemObject」について

    ただいまASPでWebシステムの開発をしております。 「Scripting.FileSystemObject」で質問をさせてください。 ASPの処理の中でファイルの削除をやりたかったので「Scripting.FileSystemObject」でファイル操作をしようと思いました。 記述は以下の通りです。 Dim objFileDelete Set objFileDelete = CreateObject("Scripting.FileSystemObject") objFileDelete.DeleteFile 消したいファイルのパス & ファイル名 ,True Set objFileDelete = Nothing 実行後にファイルを確認しましたが、消されていませんでした。 実行時にエラーにもなりませんでした。 調べてみると「Scripting.FileSystemObject」オブジェクトが作成されていないようなのです。 疑問に思ったことですが、そもそも「Scripting.FileSystemObject」はなにに入っている(表現がおかしいかもしれません)ものなのでしょうか? Windowsのシステムなのでしょうか? それともIISに依存するものでしょうか? 御存知の方がおりましたら教えてください。 お願いします。

  • ディレクトリの存在有無の確認方法

    VB6を使っています。 ファイルの存在有無はFileSystemObjectを使って以下のような方法で確認しいますが、ディレクトリの存在有無はどのようにすれば、確かめられるでしょうか? Dim objFileSys As Object Set objFileSys = CreateObject("Scripting.FileSystemObject") If objFileSys.FileExists("C:ABC.XYZ") Then よろしくお願いします。

  • display.vbsというファイルがstartupフォルダにあるので

    display.vbsというファイルがstartupフォルダにあるのですが? display.vbsというファイルがすべてのプログラムのstartupフォルダにあるのですが、これは何でしょうか?名前からして気持ち悪いので正体を知っている人がいたら教えて欲しいです。 メモ帳で開いたら下記のようなソースになっていました。 よろしくお願いします。 -------------------------------------------- ' Self destructive VBScript for changing optimal resolution ' Set optimal resolution Set objShell = Wscript.CreateObject("Wscript.Shell") objShell.Run "c:\windows\options\cfgdisp.exe /optimum", 7, True ' Now destroy itself Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile("C:\Documents and Settings\All Users\Start Menu\Programs\Startup\display.vbs") --------------------------------------------

  • Jスクリプトではどうなりますか

    クッキーと最近使用したファイルを削除するスクリプトを書いてます。 VBSでは '------------------------------------ dim Fs Set Fs = WScript.CreateObject("Scripting.FileSystemObject") '最近使ったファイルを削除 Fs.DeleteFile "C:\WINDOWS\Recent\*.*" 'クッキーを削除 On Error Resume Next Fs.DeleteFile "C:\WINDOWS\Cookies\*.txt" msgbox "削除しました。" '------------------------------------ となりますがこれをjスクリプトで書くとどうなりますでしょうか?   

  • 再度:VBSで指定したフォルダー内のファイルを書き出さないようにする

    先ほども似たような質問をしました。 あるフォルダの中にあるファイル名の一覧をファイル"f.name.txt"を書き出したいのですが"新しいフォルダ"のなかにあるファイルは書き出さないようにしたいです。下記のVBSは"新しいフォルダ"のなかに更にフォルダが階層的に存在するときには"新しいフォルダ"の中のファイルも全て書き出してしまいます。 "新しいフォルダ"の中にフォルダがない場合は正しく動きます。 "新しいフォルダ"の中にフォルダが階層的にあっても"新しいフォルダ" の中にあるファイル名を書き出さないようにするにはどうしたらよいのでしょう? ************************************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) If Folder.Name <> "新しいフォルダ" Then For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name abc.Write Folder & "\" & Fname & vbCrLf Next End If For Each Subfolder in Folder.SubFolders 'Folder内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • なぜ開かない?

    VBScriptでブラウザからEXCELのシートを開くプロシージャを作りたいのですが、以下のようにしても開けません。ただし、実際に手動でこのEXCELファイルを開くと、「すでに開かれています」とのメッセージが出るので、開かれているけど表示されないといった、おかしな現象が起きていると思われます。どこが間違っているのでしょうか。 Dim objExcel Set objExcel = CreateObject("Excel.Application") sub openExcel Dim objFs Set objFs = CreateObject("Scripting.FileSystemObject") if true = objFs.FileExist("C:\・・ファイル名.xls") Then objExcel.WorkBooks.Open("C:\・・ファイル名.xls") end If end sub

  • [VBScript]ファイルの削除

    ファイルの削除を行うために以下のように書いて実行したところ。 「Microsoft VBScript 実行時エラー '800a0046' - 書き込みできません。」 というエラーメッセージがでてしまいました。 ------------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetFile(FileName.txt) src.Delete ------------------------------- ファイルのプロパティを見てもフルコントロールを許可していますし、実行者もAdmin権限です。 どこをチェックすればよろしいでしょうか? または、どのようにコーディングすればよいでしょうか?

  • Notes 開発で、 excelファイルを読み込みデータを追加したい。

    現在notes7で開発を行っている(初心者)なのですが ビュー内の選択している文書からデータを取ってきて 読み込んだexcelファイルに書き足していきたいのですが、 任意のexcelを開くところまではネットを参考にして出来たのですが 詳細を理解していないため、そのファイルにデータを書き足していくことが出来ません。アドバイスをお願い致します。 現在作ってあるプログラムが以下です。 ' 既存のEXCELワークブックを開く Dim xlApp As Variant ' Excelオブジェクト ' マイドキュメントの指定ファイルを開く Dim wsh As Variant, fso As Variant Dim FilePath As String, FileName As String Set wsh = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") FilePath = wsh.SpecialFolders("MyDocuments") FileName = FilePath & "\sample.xls" If Not fso.FileExists(FileName) Then Msgbox "ファイルがありません。" & Chr(13) & FileName, 16 Exit Sub End If Set xlApp = CreateObject("Excel.Application") ' Excel OLE起動 xlApp.Workbooks.Open FileName xlApp.Visible = True これで、ファイルは開けます。ちなみにビュー内の選択文書の取り込みは出来てます。後は、そのデータをエクセルに書き出すだけなのですが そこが解りません。 それと、現在マイドキュメント内のファイルを読み込んでますが 同じデータを共有リソースの中に保存してあるので、そっちから開きたいのですが、パスをどのように設定すればいいのか解りません。 すみませんが、アドバイスをお願い致します。

  • ファイルの有無を判定してからリンクをはりたい

    EXCELで、 Function isFileExist(Filename As String) As Boolean Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.FileExists(Filename) Then isFileExist = True Else isFileExist = False End If End Function という自作の関数を標準モジュールにVBAでつくっておき、 セルに =IF(isFileExist("aaa.pdf"),HYPERLINK("aaa.pdf","ファイルを見る"),"ファイルはありません") と書いて、ファイルがある場合だけリンクをはるようにしようとしました。 ところが、ファイルがない場合でも、セルをクリックすると、 「指定されたファイルを開くことができません」と出てきてしまいます。 どうしてなのかわかる方がいましたら教えてください。