在VBScript中从cmd / c命令获取返回值

在VBScript中,内置的Shell.Run方法不提供输出redirect,因此必须使用以下解决方法:

用VbScript静静地运行命令行并获取输出?

 Dim retVal retVal = WshShell.Run( "cmd /c ""commandGoesHere"" > c:\temp\output.txt", 0, True ) 

但是, returnValue将具有cmd的返回值,而不是commandGoesHere

我以为我可以检查shell.Environment("ERRORLEVEL")但大概这也是cmd的返回值,而不是commandGoesHere

…那么我怎样才能得到commandGoesHere的返回值同时将其输出redirect到另一个文件?

Solutions Collecting From Web of "在VBScript中从cmd / c命令获取返回值"

 returnValue = WScript.CreateObject("WScript.Shell").Run( _ "cmd /v /c (>""output.txt"" ""commandGoesHere"" & exit !errorlevel!)" _ , 0 _ , True _ ) 

使用启用延迟扩展( /v )启动cmd实例,并使用由上一个命令设置的错误errorlevel退出cmd实例。

因为cmd分析器在行/块分析阶段将所有%var%读取操作替换为变量内部的值,所以需要延迟扩展。 如果没有延迟扩展( %errorlevel% ),则在开始执行命令之前,将返回exit命令返回的值。 通过延迟扩展( !errorlevel! ),在commandGoesHere结束之后执行exit命令时,将检索该值。