我正在使用此处的解决方案将.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已经完成了?我试图创建一个批处理文件,因此在继续下一步之前知道该部分何时完成会很棒。谢谢!
答案 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终止后,才会继续执行批处理脚本。 3}}命令不是必需的。
您可以通过以管理员身份运行wscript.exe
或cscript.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