我知道已经有一些答案,但我不确定为什么答案不起作用。我将列出我所做的事情。
基本上我想将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
我相信它有点小,所以我为什么要问一个新问题。
答案 0 :(得分: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
这有助于保持您的陈述可读。