使用简单的脚本重新启动在CMD窗口中运行的Web服务

时间:2018-07-06 06:42:27

标签: cmd vbscript

我在服务器的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}"

我的问题有什么简单的解决方法吗?

0 个答案:

没有答案