Войти

Показать полную графическую версию : [решено] Пауза при выполнении скрипта


zavoruev
10-09-2010, 14:01
Всем добрый день!
У меня проблема с 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
Я не знаю, как запускается и останавливается указанная Вами служба, но, ИМХО, у Вас в коде ошибки. При выполнении Вашего скрипта должна была выскочить ошибка "Не удаётся найти указанный файл". Как минимум надо писать:
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
Спасибо за подсказку! Но хотелось бы знать, как сделать паузу при выполнении данного скрипта??? Не понятно! Мне необходимо чтобы сначало выполнялся скрипт на остановку службы, и только после выполнения данного скрипта (остановка службы) осуществлялся запуск второго скрипта (запуск службы)


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

zavoruev
13-09-2010, 14:33
Теперь все понятно, спасибо большое!))

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

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

megaloman
14-09-2010, 14:08
Плохо, не на чем проверить. Вот рабочий пример:
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
Спасибо огромное)))) буду пробывать!




© OSzone.net 2001-2012