我有一个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
谢谢!
答案 0 :(得分:2)
VBScript只是一种语言,有许多不同的主机和应用程序 - 不仅仅是shell脚本,因此设置脚本的返回值是主机的责任,而不是语言。在这种情况下,主机是cscript
或wscript
(分别用于命令行和窗口主机)。两个主机都公开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
答案 1 :(得分:1)
@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表示取消/大红色x表示我。