• 締切済み

削除が実行されない

以下のvbsを実行しても rmdir が実行されません どうしたらよいでしょうか Dim objShell Dim wExec Dim strResult Set objShell = CreateObject("WScript.Shell") objShell.CurrentDirectory = "C:\Users\xxx\Desktop\test" objShell.Exec ("cmd /c dir 201406* /b/ad/s >> ログ.txt") Set wExec = objShell.Exec ("cmd /c for /R %d in (201406*) do rmdir /S /Q ""%d""") Set wExec = Nothing Set objShell = Nothing

みんなの回答

回答No.1

for文の/Rはファイルしか列挙してくれないようなので、以下のようにしてみてはどうでしょうか。 Set wExec = objShell.Exec("cmd /c for /F %d in ('dir /b /ad /s 201406*') do rmdir /S /Q ""%d""")

fbs1111
質問者

お礼

助かりました ありがとうございました

関連するQ&A

  • ipconfig /all を環境変数へ代入方法

    http://d.hatena.ne.jp/necoyama3/20081218/1229604217 にて、ipconfigコマンドを実行して標準出力を取得する方法があり、下記VBSで きちんと動くのですが、 ------------------------------- Dim objShell Dim wExec Dim sCmd Set objShell = CreateObject("WScript.Shell") ' コマンド生成 sCmd = "ipconfig" ' コマンド実行 Set wExec = objShell.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 Loop Result = wExec.StdOut.ReadAll MsgBox Result Set wExec = Nothing Set objShell = Nothing ----------------------------------- sCmdを下記に差し替えると、動かなくなります。 sCmd = "ipconfig /all" もしくは sCmd = "systeminfo" これらコマンドに差し替えてもVBSを動かす方法は ありますでしょうか。 直接、コマンドラインで ipconfig /all や systeminfoを入力する場合は きちんと出力されます。

  • VBS でDOSのNet useについて

    VBS内で DOSコマンドの net use * /delete を実行すると 必ずNで実行結果となってしまいます DOS窓ではキーボードでyをいれればいいのですがこの「y」をVBSで渡す方法が見つかりません。 いろいろ試しているのですが・・・どうにもうまくいきません。 OSはWindows7です -----------作成例 ある程度まではできたのですが  Dim objShell Dim wExec Dim sCmd0 Dim sCmd1,sCmd2,sCmd3 ' コマンド生成 sCmd0 = "net use" sCmd1 = "net use * /delete" sCom2 = "net use /persistent:yes" sCmd3 = "net use X: \\PC\skyhd108" ' objのセット Set objShell = CreateObject("WScript.Shell") ' コマンド実行 Set wExec = objshell.Exec("%ComSpec% /c " & sCmd1) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd3) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd2) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd0) Do While wExec.Status = 0 Loop Result = wExec.StdOut.ReadAll MsgBox Result WScript.Echo "お疲れ様でした!" Set wExec = Nothing Set objShell = Nothing

  • VBSでバッチを実行できません。

    C:\temp\test.batをVBSで実行しようとするのですが、 何度やっても実行されません。 想像ですが、c:\WINNT\System32\cmd.exeが動いている ようなのですが、肝心のC:\temp\test.batが動きません。 以下のように記述しました。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run ("cmd /c c:\temp\test,0,True") WIN2K、IE6.0の環境です。 どこか記述に誤りでもあるのでしょうか? どうぞよろしくお願いいたします。

  • VBScriptでCurrentDirectoryを変更する方法

    もともとのやりたいことは実行したスクリプトの相対パスでファイルを指定することです。 (スクリプトは複数の実行環境で実行するので絶対パスでは書きたくありません) ただし、ダブルクリックでも起動するし、別ファイルのD&Dでも起動するので 必然的に起動時のCurrentDirectoryが変化してしまいます。 これを固定化したいのです。 いまは固定化というか起動後に目的のディレクトリに移動することで実現させようと思っています。 とりあえず以下のコードを書きました。 Dim CurrentDirectory CurrentDirectory = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -21) Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") oShell.run "cmd CD " + CurrentDirectory, 0, FALSE Set oShell = Nothing (2行目の「-21」はスクリプト名の長さを引いているだけです。あまり気にしないでください) が、これだと見た目はうまくいくのですがcmdプロセスが残ってしまい起動するたびに増えていきます。 それにそもそもスマートではない気がします 質問は以下です。 ・上記のコードを修正してcmdプロセスを残らないようにする方法 ・上記の方法以外でCurrentDirectoryを変更する方法 どちらでもかまいません。(両方だとなおうれしいです) よろしくお願いします。

  • DOS画面起動時のパチパチを防ぐには

    VBAからDOSコマンドを起動した時、画面が一瞬パチパチ してしまいますが、このパチパチを防ぐ方法はありませんか? よろしくお願いします。 下記コードは、C:\test配下のCSVファイルを1つにまとめて、 C:\testにall.txtとして格納するものです。 その際、DOSコマンドを起動しました。 Set WSH = CreateObject("Wscript.Shell") Cmd = "COPY C:\kamakura\*.csv C:\kamakura\all.txt" Set wExec = WSH.Exec("%ComSpec% /c " & Cmd) Do While wExec.Status = 0 DoEvents Loop ' Set wExec = Nothing Set WSH = Nothing

  • VBSCRIPTでcmd命令(dir)を実行させて

    パスはcsvファイルで読みこんで、vbs上で Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /C ""dir \¥xxx\xxxxx\xxxxx" を実行させてアクセスできなかったパスがぞんざいするならエラーで返して続いて実行してほしいです。 それで最後にログにエラー情報を書く処理をおこないたいです。問題はcmdだとecho %errorlevel%これを使えば すぐにこげたことを1か0で返してくれますが vbs上でも可能ですか?

  • cscriptで文字変数 に ” を入力するには

    お世話になります。 早速ですが、質問があります。 c:\test\test.exe -path "D:\data" -file "aaa.txt" -flag a というコマンドをcscript のプログラムから起動したいのですが、コマンド文字列を文字列変数に代入する方法 がありましたら、教えてください。 Cscript test.vbs %1 ======================================= Dim WshShell Dim oExec Dim Cmd Dim File File = WScript.Arguments(0) Cmd = "c:\test\test.exe -path "D:\data" -file "a.out" -flag " & File                     ↑↑↑↑                  これができません? Set WshShell = CreateObject("WScript.Shell") set oExec = WshShell.Exec(Cmd) Do While oExec.Status = 0 Wscript.Sleep 100 Loop "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

  • Excelで、WScript.Shell、標準出力

    Excelで、WScript.Shellを使って、標準出力を経由してデータを取得 Excelで、CreateObject("WScript.Shell")を使って、標準出力を経由してデータを取得したいと考えたのですが、サイズに制限がありそうです。 標準出力のサイズが4096バイトを超えると、DOS窓が閉じず、強制的に終了させると超えた分はどこかへ消えました。 下記のコードで確かめたのですが、何かこの容量の制限を取り払う方法はないでしょうか? Sub Sample1標準出力0() Dim WSH, wExec Dim sCmd As String Dim Result As String Set WSH = CreateObject("WScript.Shell") sCmd = "type D:\t.txt" Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 DoEvents Loop Result = "" Result = wExec.StdOut.ReadAll Debug.Print Len(Result) MsgBox Result Set wExec = Nothing Set WSH = Nothing End Sub

  • vbsのショートカット作成で、引数に不具合がでる

    あるプログラムに対し、ショートカットを vbsで作成したいのですが、 リンク先の引数で不具合が発生します。 具体的には KeePassというアプリケーションで、 Database.kdeを開き、パスワードにpassを指定する、というものです。 "C:\...\KeePass.exe" "Database.kdb" -pw:"pass" vbsのソースはこちらです ------------------------------------------------------------ Dim WshShell, fso, ShrCut Set WshShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set ShrCut = WshShell.CreateShortcut(WSHShell.CurrentDirectory & "\KeePass.lnk") ShrCut.TargetPath = WSHShell.CurrentDirectory & "\KeePass.exe"" ""Database.kdb"" -pw:""pass" ShrCut.WorkingDirectory = WSHShell.CurrentDirectory ShrCut.IconLocation = WSHShell.CurrentDirectory & "\KeePass.exe" ShrCut.Save ------------------------------------------------------------ ショートカット作成後に実行すると、"passを探しています と表示されますが、 ショートカットのプロパティを開き、リンク先をコピペで更新すると、動作します。 宜しくお願い致します。

  • VBAで外部プログラムを非表示で実行するには

    VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。 Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。 test1のプログラムでエラーをでなくする方法、または、test2のプログラムでコマンドプロンプトのウインドウを非表示にする方法がありましたら教えてください。 ------------------------------------------------------- Sub test1()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.Run("%ComSpec% /c " & command, 0, False) '<===(A)  Set we = Nothing  Set ws = Nothing End Sub ------------------------------------------------------- Sub test2()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.exec("%ComSpec% /c " & command)  Do Until we.Status   DoEvents  Loop  Set we = Nothing  Set ws = Nothing End Sub -------------------------------------------------------

専門家に質問してみよう