如何在Wscript.Shell + cmd.exe中使用变量?
How to use variables in Wscript.Shell + cmd.exe?
我正在尝试将变量替换为 wsh.run 命令中的路径(它应该启动一个批处理文件),但我在 DOS 控制台中收到错误消息:"The file name, directory name or volume label syntax is incorrect".
这里是有效的代码:
Sub TestDos()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim fBatFile As String
Dim ErrorCode As Integer
Dim wkPath As String
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wkPath = Application.ActiveWorkbook.Path
fBatFile = wkPath & "\run.bat"
ErrorCode = wsh.Run("cmd.exe /c cd /d G:\Projects && G:\Projects\run.bat", windowStyle, waitOnReturn)
Debug.Print ErrorCode
End Sub
我试过:
ErrorCode = wsh.Run("cmd.exe /c cd /d wkPath && fBatFile", windowStyle, waitOnReturn)
或:
ErrorCode = wsh.Run("cmd.exe /K cd /d " & wkPath & fBatFile & "", windowStyle, waitOnReturn)
但它不起作用。
有谁能帮帮我吗?
我找到了解决方案:
ErrorCode = wsh.Run("cmd.exe /c cd /d " & wkPath & " && " & fBatFile,
windowStyle, waitOnReturn)
我找不到一个清晰的网页来解释我们何时以及如何需要
'&' 和 ””。
官方文档对我来说非常晦涩。
总之,这次就算了!
P.S.: 如果我使用 "cmd.exe /k"(我保持 dos 控制台打开),而不是 '/c',VBA 编辑器给我一个 "Overflow" 错误。幸运的是,我需要在批处理文件的末尾关闭dos控制台。
我正在尝试将变量替换为 wsh.run 命令中的路径(它应该启动一个批处理文件),但我在 DOS 控制台中收到错误消息:"The file name, directory name or volume label syntax is incorrect".
这里是有效的代码:
Sub TestDos()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim fBatFile As String
Dim ErrorCode As Integer
Dim wkPath As String
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wkPath = Application.ActiveWorkbook.Path
fBatFile = wkPath & "\run.bat"
ErrorCode = wsh.Run("cmd.exe /c cd /d G:\Projects && G:\Projects\run.bat", windowStyle, waitOnReturn)
Debug.Print ErrorCode
End Sub
我试过:
ErrorCode = wsh.Run("cmd.exe /c cd /d wkPath && fBatFile", windowStyle, waitOnReturn)
或:
ErrorCode = wsh.Run("cmd.exe /K cd /d " & wkPath & fBatFile & "", windowStyle, waitOnReturn)
但它不起作用。 有谁能帮帮我吗?
我找到了解决方案:
ErrorCode = wsh.Run("cmd.exe /c cd /d " & wkPath & " && " & fBatFile, windowStyle, waitOnReturn)
我找不到一个清晰的网页来解释我们何时以及如何需要 '&' 和 ””。 官方文档对我来说非常晦涩。
总之,这次就算了!
P.S.: 如果我使用 "cmd.exe /k"(我保持 dos 控制台打开),而不是 '/c',VBA 编辑器给我一个 "Overflow" 错误。幸运的是,我需要在批处理文件的末尾关闭dos控制台。