我正在尝试创建一个批处理文件(或其他文件)来显示带有是/否选项的弹出提醒,我可以将其设置为在任务计划程序中指定的时间运行。这将计划在基本计算机上运行,因此最终用户将不需要运行任何主要的脚本软件。
我需要设置提醒,提醒员工每天早上签到。如果他们选择“是”,我希望它只关闭弹出窗口,但如果他们选择“否”,我希望它打开网站让他们签到。
我当前有一个包含以下内容的批处理文件:
@echo off
del msgbox.vbs
echo x=msgbox("Reminder to sign in on School Checkin." ,4, "School Checkin Reminder") >> msgbox.vbs
start msgbox.vbs
所以我可以将其设置为显示是/否选项,但我希望将其设置为当他们按“否”时,它会打开登记网站。
它不需要是一个批处理文件,但至少可以在后台运行而不显示命令,并且可以通过任务计划程序运行。
答案1
这是一种方法。您可以使用微软 HTA制作一个简单的对话框,上面有一个“是”和“否”按钮。您的 IT 部门可能不允许 HTA,但大多数部门都允许。
这也是在 C# 中要执行的非常少的代码,但您需要编译和分发它。
您希望[Yes]
按钮执行什么操作?我让它只是关闭窗口。
我让它打开默认浏览器窗口DuckDuckGo.com
..我确信这不是你要做的。
我并不是来持续提供支持,让它完全按照你的要求去做的。如果它还没有达到你的要求,我会给你一个起点。 我很乐意回答问题,但不负责提供解决方案如果不是这样的话。也许您的补充可以用来更新这个答案。
优点:
- 内置于 Windows
- 基于 Web 的 GUI
- 直接访问 vbscript 或 javascript (jscript)
缺点:
- 打开时你会看到闪光。
- 我确信评论区还会出现更多缺点 ;-)
要使用它,将文本保存到带有 HTA 扩展名的任意名称的文件中。
双击运行并选择“Microsoft(R)HTML应用程序主机”
从任务计划程序(或快捷方式)运行,它将是MSHTA <path_to_hta_file>
<!DOCTYPE html>
<html>
<head>
<title>Reminder to sign in on School Checkin</title>
<meta http-equiv="x-ua-compatible" content="IE=9">
<meta name="author" content="Jeremy England">
<meta name="copyright" content="SimplyCoded">
<meta name="last-modified" content="2015-11-10">
<hta:application
border="thin"
contextmenu="no"
innerborder="no"
icon="Narrator.exe"
maximizebutton="no"
minimizebutton="no"
selection="no"
singleinstance="yes" />
<!--HTML APP SCRIPT-->
<script type="text/vbscript">
' ---------
' On load
' ---------
Sub window_onload()
document.body.scroll = "no"
window.moveTo 0,2000
resizeWindow()
window.moveTo 200,100
End Sub
' ---------
' On Call
' ---------
Class getWindowSize
Function width()
width = document.body.offsetWidth+16
End Function
Function height()
height = document.body.offsetHeight+39
End Function
Function scrollHeight()
scrollHeight = document.getElementById("tpArea").scrollHeight
End Function
End Class
Set current = New getWindowSize
Function resizeWindow()
ratio = 0.62
wdth = current.width
hght = current.width*ratio
Do while current.height-50 <= current.scrollHeight
If current.height >= screen.height-200 Or current.width >= screen.width-200 Then
Exit Do
Else
wdth = wdth + 5
hght = hght + 5*ratio
window.resizeTo wdth, hght
End If
Loop
Do while current.height-50 >= current.scrollHeight
If current.height <= 155 Or current.width <= 250 Then
Exit Do
Else
wdth = wdth - 5
hght = hght - 5*ratio
window.resizeTo wdth, hght
End If
Loop
End Function
' ---------
' On click
' ---------
Function yesBtn()
Window.Close()
End Function
Function noBtn()
Set wsh=CreateObject("WScript.Shell")
wsh.Run "http://duckduckgo.com"
Window.Close()
End Function
</script>
<!--HTML APP STYLE-->
<style>
html, body {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px;
font-family: Arial;
font-size: 10pt;
}
#tpArea {
margin: 10px;
padding-bottom: 60px;
}
#btArea {
position: fixed;
bottom: 0px;
right: 0px;
background-color: #ecf0f1;
width: 100%;
height: 50px;
text-align: right;
}
button {
font-family: Arial;
font-size: 10pt;
position: relative;
top: 12.5px;
right: 10px;
width: 85px;
height: 25px;
margin-left: 5px;
border: none;
border-radius: 30px;
background-color: #ffffff;
}
button:hover {
color: #ecf0f1;
}
</style>
</head>
<!--HTML APP CONTENT-->
<body>
<div id="tpArea">
School Checkin Reminder
</div>
<div id="btArea">
<button id="Ybtn" onclick="yesBtn()">Yes</button>
<button id="Nbtn" onclick="noBtn()">No</button>
</div>
</body>
</html>
原始未修改的 HTA 来自这里
答案2
答案3
请注意,您的提示措辞不正确:“提醒在 School Checkin 上登录”不是是非问题。尝试“您是否在 School Checkin 上登录?”
因此,这里有一个“纯 vbscript”选项。将您现有的代码片段与 HTA 答案 ( Function noBtn()
) 中的 shell 对象代码片段相结合。将“运行命令”包装在消息框返回值的测试中(vbNo
是 vbscript 定义的常量)。
dim wsh, x
x = msgbox("Did you sign in on School Checkin?" , 4, "School Checkin Reminder")
if x = vbNo then
Set wsh = WScript.CreateObject("WScript.Shell")
wsh.Run "http://duckduckgo.com", 1, false
end if
我通过在批处理文件中运行来测试它wscript test.vbs
。大概您可以在调度程序中使用它并完全避免使用批处理文件,但您可以按照问题示例的方式回显它,因为它很紧凑。