我有一个固定的命令,我需要使用 VBA 将其传递给命令提示符,然后该命令应该运行。例如“perl a.pl c:\temp”
以下是我尝试使用的命令,但它只是打开命令提示符并且不运行命令。
Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)
请检查。
我有一个固定的命令,我需要使用 VBA 将其传递给命令提示符,然后该命令应该运行。例如“perl a.pl c:\temp”
以下是我尝试使用的命令,但它只是打开命令提示符并且不运行命令。
Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)
请检查。
S 参数本身不做任何事情。
/S Modifies the treatment of string after /C or /K (see below)
/C Carries out the command specified by string and then terminates
/K Carries out the command specified by string but remains
尝试这样的事情
Call Shell("cmd.exe /S /K" & "perl a.pl c:\temp", vbNormalFocus)
您甚至可能不需要将“cmd.exe”添加到此命令,除非您希望在运行此命令时打开命令窗口。Shell 应自行执行该命令。
Shell("perl a.pl c:\temp")
-编辑-
要等待命令完成,您必须执行@Nate Hekman 在他的回答中显示的操作here
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
wsh.Run "cmd.exe /S /C perl a.pl c:\temp", windowStyle, waitOnReturn