从 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-值是主机的责任,而不是语。在这种情况下,主机是 cscript
或 wscript
(分别用于命令行和窗口主机)。两个主机都公开了 WScript
对象,您可以在该对象中将 return 代码指定为 Quit
方法的参数(请注意,VBScript 不会在 void
上使用括号(Sub
) 方法调用:
WScript.Quit 123
如果您想 return 来自 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 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 对我来说。
我有一个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-值是主机的责任,而不是语。在这种情况下,主机是 cscript
或 wscript
(分别用于命令行和窗口主机)。两个主机都公开了 WScript
对象,您可以在该对象中将 return 代码指定为 Quit
方法的参数(请注意,VBScript 不会在 void
上使用括号(Sub
) 方法调用:
WScript.Quit 123
如果您想 return 来自 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 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 对我来说。