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

问题描述 投票:1回答:1

我正在尝试将变量替换为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)

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

excel vba cmd wsh
1个回答
0
投票

我找到了解决方法:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.