使用excel VBA在命令提示符中执行命令

时间:2013-07-30 20:22:23

标签: excel vba excel-vba shell command-line

我有一个固定的命令,我需要使用VBA传递给命令提示符,然后命令应该运行。 例如“perl a.pl c:\ temp”

以下是我尝试使用的命令,但它只是打开命令提示符而不运行命令。

Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)

请检查。

1 个答案:

答案 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