如何在Wscript.Shell + cmd.exe中使用变量?

时间:2019-11-15 11:41:33

标签: excel vba cmd wsh

我正在尝试将变量替换为wsh.run命令中的路径(它应该启动一个批处理文件),但是在dos控制台中出现错误:“文件名,目录名或卷标语法不正确“。

以下代码有效:

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)

但是它不起作用。 有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

  

ErrorCode = wsh.Run(“ cmd.exe / c cd / d”&wkPath&“ &&”&fBatFile,   windowStyle,waitOnReturn)

我找不到清晰的网页来说明我们何时以及如何需要 “&”和“”。 官方文件对我来说很晦涩。

无论如何,即使这次,它也完成了!

P.S .:如果我使用“ cmd.exe / k”(我将dos控制台保持打开状态)而不是“ / c”,则VBA编辑器会给我一个“溢出”错误。幸运的是,我需要在批处理文件末尾关闭dos控制台。