2016-11-05 78 views
1

我使用從這裏的解決方案轉換.csv格式的.xlsx:如何讓cmd知道VB腳本已經完成?

Convert .CSV to .XLSX using command line

Dim file, WB 

With CreateObject("Excel.Application") 
On Error Resume Next 
For Each file In WScript.Arguments 
    Set WB = .Workbooks.Open(file) 
    WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51 
    WB.Close False 
Next  
.Quit 
End With 

WScript.Echo "Done!" 

我試圖從.CMD運行這一點,一切正常,但是當你從CMD運行它時,命令只是馬上完成,儘管VB腳本仍然處理。有沒有辦法讓cmd知道vb已經完成?我正在嘗試創建一個批處理文件,所以在繼續下一步之前知道此部分何時完成將會非常好。謝謝!

+0

也許不是一個重複,但以下看起來相關:http://stackoverflow.com/q/187040/4996248 –

+1

也許像['開始「」/等待wscript yourscript.vbs「](http:// ss64.com/nt/start.html)就足夠了。 – JosefZ

回答

2

你可能本身運行腳本:

C:\path\to\your.vbs 

如果這樣做,與相關的解釋器,在正常安裝wscript.exe腳本。基本上,上面是一樣的

wscript.exe C:\path\to\your.vbs 

wscript.exe異步啓動腳本,這意味着立即在腳本繼續在後臺運行,它返回。爲了同步運行腳本,您需要使用命令行解釋器cscript.exe。添加參數//NoLogo以禁止版權/版本信息消息。

cscript.exe //NoLogo C:\path\to\your.vbs 

由於批處理腳本的執行只會在VBScript終止後繼續執行。使用call命令不是必需的。

您可以通過以管理員身份運行wscript.exe //h:cscriptcscript.exe //h:cscript,將缺省解釋器從wscript.exe更改爲cscript.exe

+0

什麼是// //所有關於?命令開關是'/'。從'cmd'提示符'cscript.exe/nologo'工作正常。 – Lankymart

+0

看看'cscript /?'的輸出。我想最初的目的是區分解釋器的參數和腳本的參數。現在'// NoLogo'和'/ NoLogo'似乎都有效,但是使用雙斜線作爲解釋參數成爲我的習慣。 –

+0

好吧,從來沒有注意到,因爲主機參數一直用'/'來工作。永遠學習。 – Lankymart

0

通過使用請致電cscript批處理腳本將一直等到腳本引擎進程終止。 /T允許您設置超時。如果運行時間超過以秒爲單位指定的限制,則進程會中斷。

@echo off 
call cscript //T:10 "%~dp0example.vbs" 
ECHO %ERRORLEVEL% 
pause 

使用wscript.quit在你的VBS腳本返回的退出代碼。錯誤編號存儲在錯誤編號屬性中。

On Error Resume Next 
WScript.Sleep 2000 
Err.Raise 507 ' An exception occurred 
wscript.quit Err.number 
相關問題