如何让cmd知道VB脚本已经完成?

时间:2016-11-05 22:34:44

标签: vbscript

我正在使用此处的解决方案将.csv转换为.xlsx:

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已经完成了?我试图创建一个批处理文件,因此在继续下一步之前知道该部分何时完成会很棒。谢谢!

2 个答案:

答案 0 :(得分: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终止后,才会继续执行批处理脚本。

您可以通过以管理员身份运行wscript.execscript.exe,将默认解释器从wscript.exe //h:cscript更改为cscript.exe //h:cscript

答案 1 :(得分:0)

通过使用调用 cscript,批处理脚本将一直等到脚本引擎进程终止。 / T 允许您设置超时。如果运行时间超过以秒为单位指定的限制,则进程会中断。

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

在vbs脚本中使用wscript.quit返回退出代码。错误号存储在 Err.number 属性中。

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