我有一个固定的命令,我需要使用VBA传递给命令提示符,然后命令应该运行。 例如“perl a.pl c:\ temp”
以下是我尝试使用的命令,但它只是打开命令提示符而不运行命令。
Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)
请检查。
答案 0 :(得分:51)
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