2017-04-21 212 views
0

我用下面的VBScript代码提取一个安装文件,VBScript不执行命令提示命令?

Set oShell = CreateObject ("WScript.Shell") 
oShell.Run "cmd.exe ""C:\Program Files\NewFolder\setup.exe"" /extract:""C:\Program Files\NewFolder"" " 

时,在命令提示符下手动完成这工作得很好。但在VBScript中,它只会打开命令提示符而没有任何反应。

我也试过这个,

Set oShell = CreateObject ("WScript.Shell") 
oShell.Run "%comspec% /K ""C:\Program Files\NewFolder\setup.exe"" /extract:""C:\Program Files\NewFolder"" " 

这样,它说,

“C:\程序”未被识别为内部或外部命令,可操作的程序或批处理文件。

我也尝试了这些,

Set oShell = CreateObject ("WScript.Shell") 
oShell.Run "cmd.exe /c ""C:\Program Files\NewFolder\setup.exe"" /extract:""C:\Program Files\NewFolder"" " 

Set oShell = CreateObject ("WScript.Shell") 
oShell.Exec "cmd.exe ""C:\Program Files\NewFolder\setup.exe"" /extract:""C:\Program Files\NewFolder"" " 

它不工作。

请问这里有什么问题?

+2

要执行的命令,让你需要使用'CMD/C' –

+2

任的'CMD/C','CMD.EXE/C',或'%COMSPEC%/ C'应该只是罚款。使用'/ k'而不是'/ c'来防止CMD窗口关闭,所以你可以检查命令输出。您在尝试时收到的错误消息表明,与您声称的相反,您没有在引号中放置“setup.exe”的路径。 –

+0

我试过了'/ k',我得到的消息说'C:\ Program'没有被识别为内部或外部命令,可操作的程序或批处理文件。' –

回答

1

它看起来像您的可执行文件中的自动提取器无法处理带空格的路径。作为一种解决方法,您可以更改工作目录并调用没有路径的设置。

Set sh = CreateObject ("WScript.Shell") 
sh.CurrentDirectory = "C:\Program Files\NewFolder" 
sh.Run "%COMSPEC% /c setup.exe /extract:." 
+0

完美工作。 –

+0

谢谢[Ansgar Wiechers](https://stackoverflow.com/users/1630171/ansgar-wiechers)和其他人。 –