我在服务器的cmd窗口中运行了一个Web服务。 除了进入窗口并手动停止(使用ctrl + c)并再次启动之外,我无权直接干涉它。
任务是在某些时候重新启动它。因此,要正确关闭,请选择该窗口,将其最大化,发送ctrl + c,等待确认弹出,并使用“ J”(这不是错误,这是德国客户)进行确认,然后按ENTER。 然后稍等片刻,然后使用提供的蝙蝠再次启动它。
这是脚本:
Set shell = CreateObject("WScript.Shell")
shell.AppActivate "Administrator: WebGui"
wscript.Sleep 5000
shell.SendKeys "% x"
wscript.Sleep 1000
shell.SendKeys "^C"
wscript.Sleep 60000
shell.SendKeys "J"
wscript.Sleep 1000
shell.SendKeys "{ENTER}"
wscript.Sleep 10000
shell.CurrentDirectory = "C:\webapps\web_gui"
shell.Run "runWebGui.bat"
wscript.Sleep 10000
shell.SendKeys "% n"
一切正常,但是当我使用Task-Schedular或脚本让它自动完成时,它似乎不起作用。
在这里,我尝试使用脚本代替Task-Schedular。
'timer.vbs
Set objShell = Wscript.CreateObject("Wscript.Shell")
Do
Wscript.Sleep 1000
If Time() = TimeValue("6:45:00 AM") Then
objShell.Run "c:\windows\system32\cscript.exe /B /nologo C:\login\g-restart.vbs"
Wscript.echo "Neustart um 6:45 gestartet"
ElseIf Time() = TimeValue("12:00:00 PM") Then
objShell.Run "c:\windows\system32\cscript.exe /B /nologo C:\login\g-restart.vbs"
Wscript.echo "Neustart um 12:00 gestartet"
ElseIf Time() = TimeValue("5:00:00 PM") Then
objShell.Run "c:\windows\system32\cscript.exe /B /nologo C:\login\g-restart.vbs"
Wscript.echo "Neustart um 17:00 gestartet"
End If
Loop
两种情况下,问题似乎出在AppActivate上,然后在没有手动完成的情况下发送密钥。由于按键不是发送到活动窗口,而是发送到前景中的任何窗口……
所以我认为问题出在这里:
shell.AppActivate "Administrator: WebGui"
wscript.Sleep 5000
shell.SendKeys "% x"
wscript.Sleep 1000
shell.SendKeys "^C"
wscript.Sleep 60000
shell.SendKeys "J"
wscript.Sleep 1000
shell.SendKeys "{ENTER}"
我的问题有什么简单的解决方法吗?