2017-04-21 172 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)和其他人。 –