batch-file - 根据按下的按钮路由脚本的路径 mshta.exe vbscript :Execute

标签 batch-file vbscript

在批处理文件中,我可以得到以下内容,给我一个带有“确定”按钮的消息框

mshta.exe vbscript:Execute^("msgbox ""Registers NOT submitted""& VbCrLf & VbCrLf &""Tap or click 'Ok' to exit"",vbexclamation,""Please check your internet connection"":close"^)

我可以添加 yes no 按钮;
mshta.exe vbscript:Execute^("msgbox ""Registers NOT submitted""& VbCrLf & VbCrLf &""Tap or click 'Ok' to exit"",VBYesNo,""Please check your internet connection"":close"^)

我需要做的是根据他们按下的按钮来路由脚本其余部分的路径 - 是/否。这可能不引用外部 .vbs 吗?

非常感谢。

最佳答案

不容易,不。 VBScript 和 JScript 的 HTA 实现都没有提供生成退出代码的 native 方式。您可能会找到与 HTA 实例对应的进程对象,然后使用该对象的 .Terminate退出非零的方法(如 this answer 中所示);或者可能让 HTA 有条件地写入临时文件或存储注册表值。但是所有这些选择都涉及离开优雅的单线世界,您不妨使用 hybrid script它确实识别退出非零的命令。

如果您追求的是整洁的单行,那么使用 PowerShell 可能会更好:

powershell "add-type -As System.Windows.Forms; exit([windows.forms.messagebox]::show(\"Registers NOT submitted.`n`nDo you want to continue?\",'Warning',4))"

这将退出"is"状态 6,“否”状态 7。所以基本上...

if errorlevel 7 (
    rem // user chose "No"
    exit /b
) else (
    rem // user chose "Yes"
    goto begin
)

那个 [windows.forms.messagebox]::show 中“4”的参数方法可以是以下任何值:

0 -- OK
1 -- OK Cancel
2 -- Abort Retry Ignore
3 -- Yes No Cancel
4 -- Yes No
5 -- Retry Cancel

这些按钮会产生以下退出代码:

OK = errorlevel 1
Cancel = errorlevel 2
Abort = errorlevel 3
Retry = errorlevel 4
Ignore = errorlevel 5
Yes = errorlevel 6
No = errorlevel 7

关于batch-file - 根据按下的按钮路由脚本的路径 mshta.exe vbscript :Execute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978957/

相关文章:

postgresql - 在 postgresql 中通过批处理文件运行查询

vbscript - 使用 VBS 更改 Active Directory 中的密码到期日期

如果任何列为空,Windows 批处理文件将删除 csv 文件中的那些行

java - 使用.sh文件执行java程序时出错

batch-file - 控制某个 MP 对象在播放音频文件时改变音量设置

vbscript - 将凭据传递给 VBScript 中的 WMI 调用

syntax - VBscript 中的函数是否接受可变数量的参数?

Javascript 错误...我认为

batch-file - 特定文件的 "FOR"命令?

batch-file - 批处理文件 - 如何使用 for 循环对所有特定变量进行批量更改