从 Windows CMD 调用的 .vbs 获取 return 值

Getting return value from .vbs called from Windows CMD

我有一个CMD文件,将MsgBox弹出命令写入VBScript文件,然后转身立即执行。最初它只是使用 "OK" 按钮来消除用户版本已过期的警告。我想修改它以使用 Yes/No/Cancel 按钮来允许用户自动更新版本。

这是导致弹出窗口的代码。我已经尝试了一些不同的方法来尝试将 .vbs 文件设为 return 一个值,但是在获得正确的语法时遇到了问题。有什么建议吗?

@echo X=MsgBox("Your Version: %VER%" +vbCrLf+ "Recommended: %RVER%" +vbCrLf+ "Do you want to update the version?",vbYesNoCancel,"Warning Message"^) >%APPDATA%\temp_msg2.vbs

call %APPDATA%\temp_msg2.vbs

谢谢!

VBScript 只是一种语言,有许多不同的主机和应用程序 - 不仅仅是 shell-脚本,因此设置脚本的 return-值是主机的责任,而不是语。在这种情况下,主机是 cscriptwscript(分别用于命令行和窗口主机)。两个主机都公开了 WScript 对象,您可以在该对象中将 return 代码指定为 Quit 方法的参数(请注意,VBScript 不会在 void 上使用括号(Sub) 方法调用:

WScript.Quit 123 

如果您想 return 来自 MsgBox 的值,您可以直接提供它:

WScript.Quit MsgBox( "Foobar" )

您的 .cmd 批处理文件需要知道 vbYesvbNovbCancel.

的数值

...我建议在 VBScript 文件中完成所有脚本编写,并尽可能避免使用 .cmd/.bat 文件,因为 VBScript 更具可读性和可读性强大(虽然我更喜欢使用 JScript 语言,但那只是我)。

MSDN 引用了 WScript 对象的所有成员:https://msdn.microsoft.com/en-us/library/at5ydy31(v%3Dvs.84).aspx

这是一个页面,列出了 wscript/cscript(统称为:"Windows Script Host")中可用的其他对象和功能:https://msdn.microsoft.com/en-us/library/98591fh7(v=vs.84).aspx

@ECHO OFF
SETLOCAL
echo X=MsgBox("Your Version: %VER%" +vbCrLf+ "Recommended: %RVER%" +vbCrLf+ "Do you want to update the version?",vbYesNoCancel,"Warning Message"^) >U:\temp_msg2.vbs
>>U:\temp_msg2.vbs echo wscript.quit X

call u:\temp_msg2.vbs

ECHO %errorlevel%

GOTO :EOF

显示 6 个表示是,7 个表示否,2 个表示 Cancel/big 红色 x 对我来说。