vbscript - 从 Windows CMD 调用的 .vbs 获取返回值

标签 vbscript cmd msgbox

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

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

@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 脚本,因此设置脚本的返回值是主机的责任,而不是语言的责任。在这种情况下,主机是 cscriptwscript (分别适用于命令行和窗口主机)。两台主机均公开 WScript对象,您可以在其中将返回代码指定为 Quit 的参数方法(请注意,VBScript 在 void ( Sub ) 方法调用中不使用括号:

WScript.Quit 123 

如果你想返回 MsgBox 的值您可以直接提供:

WScript.Quit MsgBox( "Foobar" )

您的.cmd批处理文件需要知道 vbYes 的数值, vbNo ,和vbCancel .

...我建议从 VBScript 文件中执行所有脚本并避免使用 .cmd/.bat如果可以的话,请完整地保存文件,因为 VBScript 更具可读性和更强大(尽管我更喜欢使用 JScript 语言,但这只是我的想法)。

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

此页面列出了 wscript 中可用的其他对象和功能。/cscript (统称:“Windows 脚本宿主”):https://msdn.microsoft.com/en-us/library/98591fh7(v=vs.84).aspx

关于vbscript - 从 Windows CMD 调用的 .vbs 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567816/

相关文章:

validation - 16 位 BMP 验证

mysql - 在经典 ASP 中检查连接是否正常

vbscript - 以 100 纳秒的粒度显示 NTFS 时间戳

javascript - 强制文本框或变量的长度

windows - 无法写入文件错误 - ADODB.stream

CMD:设置缓冲区高度与窗口高度无关

java - 通过Java执行CMD长命令

java - 用Java清屏

vba - 如何使用 VBA 关闭当前打开的 MsgBox?

vb.net - vbLf、vbCrLf 和 vbCr 常数之间的差异