2017-04-21 34 views
0

私はすでにいくつかの答えがあることを知っていますが、私は答えが動作していない理由は分かりません。私は何をしたのかを列挙します。ログファイルにVBScriptの出力shell.run

基本的には、shell.Runコマンドの情報をログファイルに記録します。私は成功したバッチファイルを実行します

Dim WshShell 
Dim WshProcEnv 

Set WshShell = CreateObject("WScript.Shell") 

WshShell.Run """C:\Program Files\Folder\batchFile.bat""", 1, TRUE 

持って何

だから私は次のことを試してみましたthis oneのような答えを見て:

WshShell.Run "cmd /c C:\Program Files\Folder\batchFile.bat > C:\Program Files\Folder\log.txt", 1, TRUE 

WshShell.Run "cmd /c ""C:\Program Files\Folder\batchFile.bat > C:\Program Files\Folder\log.txt""", 1, TRUE 

WshShell.Run """cmd.exe /c ""C:\Program Files\Folder\batchFile.bat > C:\Program Files\Folder\log.txt""", 1, TRUE 

私は新しい質問をした理由、それはそれゆえ、小さな何か考えています。

答えて

1

コマンドライン全体ではなく、スペースを含む個々のパスの周りに引用符を付ける必要があります。

WshShell.Run "cmd /c ""C:\Program Files\Folder\batchFile.bat"" > ""C:\Program Files\Folder\log.txt""", 1, True 

通常、このようなものを処理する最良の方法は、変数の中にあなたのパスを入れて、ユーザー定義の引用機能で引用を行うことです。

Function qq(str) 
    qq = """" & str & """" 
End Function 

batchfile = "C:\Program Files\Folder\batchFile.bat" 
logfile = "C:\Program Files\Folder\log.txt" 

WshShell.Run "cmd /c " & qq(batchfile) & " > " & qq(logfile), 1, True 

大幅にを保つことに役立ちます文を読むことができます。

関連する問題