Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Пауза при выполнении скрипта (http://forum.oszone.net/showthread.php?t=185108)

zavoruev 10-09-2010 14:01 1492483

Пауза при выполнении скрипта
 
Всем добрый день!
У меня проблема с DrWeb ES 5, служба постоянно падает и агенты на клиентских машинах не видят сервер. Мне необходимо написать скрипт где сначала эта служба останавливается и только после остановки вновь запускается (рестарт не помогает, т.к вываливается ошибка о невозможности сделать рестарт).
У меня есть мои ваяния, но посмотрите пож-та))) и по возможности исправьте

set FS = CreateObject("Scripting.FileSystemObject")
set WSHShell = CreateObject("WScript.Shell")
script_stop = """C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe stop"""
script_start = """C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe start"""
WshShell.Run script_stop & "" & script_start, 0, True

megaloman 11-09-2010 21:07 1493317

Я не знаю, как запускается и останавливается указанная Вами служба, но, ИМХО, у Вас в коде ошибки. При выполнении Вашего скрипта должна была выскочить ошибка "Не удаётся найти указанный файл". Как минимум надо писать:
script_stop = """C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe"" stop"
И в методе Run нельзя так механически объединять запуск двух екзешников. На каждый запуск должен быть свой Run. Вот пример, он работает. Увы, указанной Вами службы у меня нет, попробовать не на чем.
Код:

Set WS = CreateObject("WScript.Shell")
Prg = """C:\Program Files\WinAmp\winamp.exe"" E:\Audio\Барды\Атланты.mp3"
WS.Run Prg, 1, True

А вот так - низззя
Prg = """C:\Program Files\WinAmp\winamp.exe E:\Audio\Барды\Атланты.mp3"""

zavoruev 13-09-2010 11:53 1494260

Спасибо за подсказку! Но хотелось бы знать, как сделать паузу при выполнении данного скрипта??? Не понятно! Мне необходимо чтобы сначало выполнялся скрипт на остановку службы, и только после выполнения данного скрипта (остановка службы) осуществлялся запуск второго скрипта (запуск службы)

Код:

set WSHShell = CreateObject("WScript.Shell")
script_stop = """C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe"" stop"
script_start = """C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe"" start"
WshShell.Run script_stop,  0, True --- что тут должно быть
WshShell.Run script_start,  0, True  ---- что тут должно быть


megaloman 13-09-2010 13:54 1494338

Можно сделать паузу, но вам не надо. Третий аргумент Run =True. Он отвечает за то, что скрипт дождется окончания Run а затем продолжит выполнение следующего Run.
Пауза в скрипте вообще-то делается
WScript.Sleep 60000*0.2
Здесь пауза - 0.2 минуты

zavoruev 13-09-2010 14:33 1494372

Теперь все понятно, спасибо большое!))

Только вот теперь одно НО. После выполнения первого скрипта на остановку службы появляется фоновое окно с просьбой нажать кнопу ОК, и если кнопка нажата не будет, второй скрипт не будет выполнен)!!! Как теперь это все победить!

zavoruev 14-09-2010 14:08 1495108

megaloman,
Проблема не решилась! Необходимо сделать так, что бы при появлении фонового сообщения с "Нажать кнопу ОК", втрой скрипт тоже выполнялся или автоматом прописать нажатие на кнопку ОК. А получается так, что если кнопку не нажму, втрой скрипт выполнятся не будет!!! Жду помощи)

megaloman 14-09-2010 14:08 1495109

Плохо, не на чем проверить. Вот рабочий пример:
Код:

Set WS = CreateObject("WScript.Shell")

Set theProga = WS.Exec("""C:\Program Files\WinAmp\WinAmp.exe"" ""E:\Audio\Mud\1974 - Mud Rock I\01 Rocket.mp3""")        ' Запустим программу

WS.AppActivate (theProga.ProcessID)      ' Активируем окно запущенного приложения
WScript.Sleep (3000)                    ' Для отладки, чтобы успеть посмотреть, как переключается

WS.SendKeys ("%{F4}")                          ' Пошлём Alt F4

Теперь идея (работоспособность написанного ниже не проверял):
Код:


set WS = CreateObject("WScript.Shell")
Set theProga = WS.Exec("""C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe"" stop")
WScript.Sleep (20000)                    ' Дадим время на работу екзешника (здесь 20 сек) - придержим выполнение скрипта
WS.AppActivate (theProga.ProcessID)      ' Активируем окно запущенного приложения
WS.SendKeys ("{ENTER}")                      ' Пошлём ENTER для нажатия ОК

Set theProga = WS.Exec("""C:\Program Files\DrWeb Enterprise Server\bin\drwcsd.exe"" start")
WScript.Sleep (20000)                    ' Дадим время на работу екзешника (здесь 20 сек) - придержим выполнение скрипта
WS.AppActivate (theProga.ProcessID)      ' Активируем окно запущенного приложения
WS.SendKeys ("{ENTER}")                      ' Пошлём ENTER для нажатия ОК


zavoruev 14-09-2010 15:12 1495147

Спасибо огромное)))) буду пробывать!


Время: 05:45.

Время: 05:45.
© OSzone.net 2001-