Перезапуск Webservice, работающего в CMD-окне, простым скриптом - PullRequest
0 голосов
/ 06 июля 2018

У меня есть веб-сервис, работающий в окне cmd на сервере. У меня нет доступа, чтобы напрямую вмешиваться в него, кроме как войти в окно и зайти вручную (с помощью 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}"

Есть ли простое решение моей проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...