![]() |
Скрипт запуска программ по времяни
Добрый день. Прошу прощения если пишу не в ту ветку форума. Нужна ваша помощь в написании скрипта который мог бы запускать определенный exe файл в зависимости от времени на компьютере. К сожалению я сам работал очень мало со скриптами и сам написать такой не смогу
Подробнее о задаче: допустим включается компьютер с 8 утра и до 5 вечера в любое время в этот момент должен запуститься файл 1.exe, и он же должен сам закончить свое выполнение часов в 16:30 а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра. Предполагается что данный скрипт будет запускаться планировщиком задач при включении компьютера. оба файла лежат по пути (C:\Program Files\cpustats) Помогите пожалуйста. Очень нужно для работы Если нужны доп. данные пишите. Заранее большое спасибо |
p.igor.kin,
в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30 по аналогии для 2.exe |
Цитата:
Извините пожалуйста а как сделать в планировщике 1 задачу для старта при включении компа и завершить её в 16:30 так что бы эта задача работала каждый день? Там есть такой пункт завершить задачу но там ставиться число и время, тоесть эта задача отработает 1 раз И самое главное как в планировщике задать запуск 1.exe с 8 до 17 в любове время и запуск 2.exe с 0 до 7 ? |
Цитата:
|
p.igor.kin, если компьютер включили до восьми часов, 1.exe вообще не должен запускаться?
|
Цитата:
|
p.igor.kin, В Вашей проблеме 2 задачи.
1. В зависимости от времени включения компьютера необходимо при включении запустить ту или иную программу. Это делает один скрипт и это одна задача в планировщике при включении. 2. В заданное время необходимо завершить указанную программу. Это сделает другой скрипт и это вторая задача планировщика. Если таких программ несколько, то на завершение каждой необходимо задание в планировщике на каждую задачу. ИМХО, проще это реализовать vbs-скриптами. Задача 1. Запускаем предметную программу в зависимости от того, когда запущен скрипт. Скрипт поместить в планировщик на включение.
Код:
ProgStart = Array("C:\Windows\System32\mspaint.exe", "08:00:00", "16:30:00", _ Возможно, в планировщике его надо запускать как, например: C:\Windows\System32\wscript.exe Диск:\Путь\Starter.vbs Задача 2 (3). Принудительно завершаем указанный процесс. Для каждого - отдельное задание в планировщике.
Код:
Set Arg = WScript.Arguments Диск:\Путь\ProgKill.vbs "notepad.exe". Создайте на него задание в планировщике на нужное время. Возможно, в планировщике его надо запускать как, например: C:\Windows\System32\wscript.exe Диск:\Путь\ProgKill.vbs "notepad.exe" На каждую программу задание в планировщике Цитата:
Поэтому надо чётко продумать хронологию событий: нельзя запускать программу после того, как Вы декларировали её завершение. |
p.igor.kin, Пытаюсь переосмыслить постановку, чтобы ограничиться одним скриптом и одним заданием в планировщике:
С 8 утра и до 16.30 вечера должна обязательно выполняться программа 1.exe, до 8.00 и после 17.00 её не должно быть. Таких программ может быть несколько со своими интервалами работы и временем завершения. Вот скрипт, который надо поместить в планировщик и в планировщике повторять его с интервалом, допустим, 5 мин.
Код:
' Путь к .exe начало конец завершить бремени, времени, семени, темени, пламени, стремени, знамени, племени, имени, вымени |
Друзья простите пожалуйста за долгое отсутствие уезжал в отпуск. Посмотрел то что вы тут накидали (варианты,идеи) не очень конечно понял. Может я так плохо объяснил а может скрипт такой сложный. Давайте поступим немного по другому.
Задача: Пользователь включает компьютер (это может быть в любое время) Нужен скрипт который при включении компьютера будет смотреть сколько времени на компьютере и будет запускать нужную программу. Предполагается что данный скрипт будет лежать по пути (C:\Program Files\cpustats и иметь название cpustats.vbs) и в планировщике будет создана задача: Тригер: при запуске системы Действие: запуск программы (C:\Program Files\cpustats\cpustats.vbs) Условия запуска программ: Если время с 8:00 до 18:00 то запустить программу (C:\Program Files\cpustats\dau\cpustats.exe) Если время с 20:00 до 6:00 то запустить программу (C:\Program Files\cpustats\night\cpustats.exe) На данный момент воспользовался скриптом пользователя megaloman за что ему огромное спасибо. ниже выкладываю поправленый скрипт под мои условия. Сохранил его как cpustats.vbs код скрипта
PHP код:
Но при его запуске получаю ошибку: (Если я правильно понял ругается на строку WShell.Run PrgName, 7, False) ![]() |
Файлы точно лежат в папке C:\Program Files\cpustats\dau и C:\Program Files\cpustats\night\cpustats.exe)
Команда dir "C:\Program Files\cpustats\dau\cpustats.exe" : C:\Users\----------->dir "C:\Program Files\cpustats\dau\cpustats.exe" Том в устройстве C не имеет метки. Серийный номер тома: 2A14-D888 Содержимое папки C:\Program Files\cpustats\dau 29.04.2017 16:25 270*336 cpustats.exe 1 файлов 270*336 байт 0 папок 64*124*461*056 байт свободно Скрипт поправил как вы сказали, но все равно не работает( Скрипт
Код:
ProgStart = Array("C:\Program Files\cpustats\dau\cpustats.exe", "08:00:00", "18:00:00", _ |
C:\Users\----------->dir "C:\Program Files\cpustats\night\cpustats.exe"
Том в устройстве C не имеет метки. Серийный номер тома: 2A14-D888 Содержимое папки C:\Program Files\cpustats\night 29.04.2017 16:25 270*336 cpustats.exe 1 файлов 270*336 байт 0 папок 63*862*890*496 байт свободно |
p.igor.kin,
Каюсь. При запуске программы надо еще кавычки. Попробуйте вариант
Код:
ProgStart = Array("C:\Program Files\cpustats\dau\cpustats.exe", "08:00:00", "18:00:00", _ |
Выходит CMD окно в котором написано
failed to open config file config.txt Press any key to exit Немнго поясню при запуске программы cpustats.exe он цепляет конфигурацию с файла config.txt который лежит в папке с программой. Судя по всему Программа пытаеться запуститься но не цепляет данный файл. В ручную всю запускается и работает нормально. |
Цитата:
|
Ваша программа запускается, но она не в состоянии найти файлы, необходимые для нормальной работы. Вот вариант.
Код:
ProgStart = Array("C:\Program Files\cpustats\dau\cpustats.exe", "08:00:00", "18:00:00", _ |
Уважаемый megaloman огромное Вам человеческое спасибо. При запуске Вашего скрипта программа удачно запускается. Проблема осталось только в том что ни как не могу запустить её в планировщике windows 7. Пробовал и C:\Windows\System32\wscript.exe C:\Program Files\cpustats\cpu.vbs и wscript.exe C:\Program Files\cpustats\cpu.vbs и просто C:\Program Files\cpustats\cpu.vbs. Планировщик ни в какую не хочет выполнять данный скрипт( Пишет задача выполняется а ни чего не происходит:(
И ещё скажите пожалуйста я смотрю вы в скрипте сделали проверку на ошибки я попробовал переименовать папку и точно вышла ошибка "обратитесь в тех поддержку". Нельзя ли это убрать? Тоесть если все хорошо скрипт молча запустился и запустил программу, а если что то не так скрипт просто запустился и молча закрылся. И ещё я заметил что скрипт постоянно висит в диспетчере задач. Тоесть он постоянно работает. Можно как нибудь сделать что бы после запуска нужной программы скрипт закрывал сам себя. Извините если прошу слишком многого. Вы и так мне очень сильно помогли. Спасибо! |
Цитата:
|
p.igor.kin, Вы уверены, что не запускается именно скрипт?
|
Цитата:
1) скрипт не запускается 2) скрипт запускается но уже ему не хватает прав на запуск программы p.s проделал такой опыт. переименовал папку где лежит программа. Запустил скрипт руками и получил ошибку. Тут все верно. Сделал задание в планировщике с выполнять вне зависимости регистрации пользователя запустил задачу и не получил ни чего. Ни ошибки ни запуска программы. Перепробовал все что только можно все работает только при "выполнять только для зарегистрированного пользователя" А мне это не подходит( |
Друзья помогите пожалуйста довести до ума поставленную задачу. Заранее всем спасибо! При ручном запуске скрипт полностью работает как надо, а через планировщик не хочет :(
Рабочий скрипт
Код:
ProgStart = Array("C:\Program Files\cpustats\dau\cpustats.exe", "08:00:00", "18:00:00", _ |
p.igor.kin,
Цитата:
Код:
' LL = WShell.Popup("Обратитесь в техподдержку" + vbCrLf + PrgName + Msg + vbCrLf + CStr(TBeg) + " " + CStr(TEnd) + " " + CStr(Time()) + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description, 6, "Программа не запускается", 16) Цитата:
А вообще-то, раз пошла такая пьянка, я бы предложил вести лог-файл работы скрипта. И я, наверное, этим озабочусь. |
Уважаемый megaloman а может быть вы подскажете как прикрутить Ваш скрипт что бы он работал при загрузке компьютера а не при входе пользователя в систему. Основная задача стоит в этом. А я с 9 утра бьюсь с этой задачей и ни чего не выходит(
|
p.igor.kin, Сделаю лог-файл, попробую прикрутить, без информации о том, что происходит, соваться нечего.
|
огромное спасибо будем ждать
|
Вложений: 1
p.igor.kin,
Вот вариант скрипта, при котором его исполнение можно проконтролировать в лог-файле
Код:
ProgStart = Array("C:\Program Files\cpustats\dau\cpustats.exe", "08:00:00", "18:00:00", _ Попробуйте этот скрипт. Посмотрите, создаётся ли лог-файл. У меня скрипт благополучно прикрутился в назначенные задания при запуске - смотрю по логу скрипта. Но у меня комп не в домене. Если у Вас проблемы - ИМХО, где-то что-то с доступом. У меня Win 7/32 |
У меня компьютер в домене на win 7 x 64
Сделал задание в планировщике как у Вас на скрине. Запуск поставил учетная запись "СИСТЕМА" галка стоит на выполнять вне зависимости от регистрации пользователя Запустил вручную из планировщика создался фал Log в котором написано +++ 19.07.2017 8:17:50 Скрипт запущен Но программа не запустилась. В планировщике стоит статус "это задание выполняется в данное время" Остановил задание в ручную в логе появилась запись !!! 19.07.2017 8:20:51 C:\Program Files\cpustats\dau\cpustats.exe Код ошибки -2147023673 === 19.07.2017 8:20:51 Скрипт завершается Если я правильно понимаю то это нет доступа.. Но без скрипта все работает. Расскажу как у меня все настроено сейчас может это как то поможет 1) в планировщике создано задание название: cpustats-dau триггер: при входе любого пользователя действия "C:\Program Files\cpustats\dau\cpustats.exe" При выполнении задания используется учетная запись "СИСТЕМА" галка стоит на выполнять вне зависимости от регистрации пользователя 2) в планировщике создано задание название: cpustats-night триггер: Ежедневно в 21:05 действия "C:\Program Files\cpustats\night\cpustats.exe" При выполнении задания используется учетная запись "СИСТЕМА" галка стоит на выполнять вне зависимости от регистрации пользователя Вот так у меня сейчас все работает, но если компьютер включается после 21:05 то увы программа уже не запускается, а если он включается до 21 и пользователь входит в систему то запускается "C:\Program Files\cpustats\dau\cpustats.exe" после чего в 21:05 запускается ещё и "C:\Program Files\cpustats\night\cpustats.exe". Собственно по этому и хотелось бы сделать 1 задание со скриптом что бы скрипт сам все делал. Создал ещё раз задание в планировщике но запустил его от имени учетной записи пользователя домена, а не от "СИСТЕМА" галка стоит на выполнять вне зависимости от регистрации пользователя +++ 19.07.2017 8:35:30 Скрипт запущен +++ 19.07.2017 8:35:31 C:\Program Files\cpustats\dau\cpustats.exe Запущено === 19.07.2017 8:35:31 Скрипт завершается P/s все бы ни чего но когда создаешь задание через GPO запуск от имени пользователя можно указать только "СИСТЕМА" ибо логины и пароли у всех пользователей разные. Да и странно ещё то что сейчас программы запускаются именно от пользователя "СИСТЕМА", а через скрипт не хотят:( |
p.igor.kin, Итак: Скрипт в задании запускается. Проблема с запуском программы. Попробуем в этом убедиться. Закомментируйте запуск программы, то есть строку:
Код:
' LL = WShell.Run("""" + PrgName + """", 7, False) |
Закомментировал строчку, Задание все так же от имени "СИСТЕМА"
в лог файле +++ 19.07.2017 8:44:52 Скрипт запущен +++ 19.07.2017 8:44:52 C:\Program Files\cpustats\dau\cpustats.exe Запущено === 19.07.2017 8:44:52 Скрипт завершается Но на самом деле программа не запустилась! |
p.igor.kin, Естественно, программа не запустилась, коль мы её и не запускали. :)
Но убедились, что логика скрипта работает верно. У меня нет мыслей, почему не отрабатывает Run, похоже, для запуска программы необходимо ответить на какой-то запрос, который Вы не можете видеть, так как задание запущено от другого пользователя при запуске системы |
Цитата:
P.s запустил задачу от имени Администратора домена domain\администратор +++ 19.07.2017 8:54:52 Скрипт запущен !!! 19.07.2017 8:55:07 C:\Program Files\cpustats\dau\cpustats.exe Код ошибки -2147023673 === 19.07.2017 8:55:07 Скрипт завершается Очень странно так как данный пользователь обладает правами равносильными пользователю ПК |
Цитата:
Цитата:
Цитата:
http://forum.oszone.net/post-2752418-26.html - вот тут я описал как у меня настроено сейчас. |
p.igor.kin, давайте ссылки на Ваши cpustats.exe и прочее, дабы коллега megaloman мог попробовать воспроизвести Ваши действия.
|
Цитата:
|
Можно думать, а можно проверить. Дело Ваше.
|
p.igor.kin,
Цитата:
Код:
ProgStart = Array("C:\Windows\System32\calc.exe", "08:00:00", "18:00:00", _ Альтернатива vbs - cmd. Если этот батник запустит Вашу программу, можно попробовать наваять решение задачи в CMD
Код:
@Echo Off А тут уже наваял
Код:
@Echo Off |
Прошу прощения за долгий ответ взял скрипт "А тут уже навязал" подставил свою программу назвал как start.bat запустил и получил:
+++ 20.07.2017 16:11:57,88 C:\Program Files\cpustats\start.bat Started === 20.07.2017 16:11:57,94 C:\Program Files\cpustats\start.bat Exit Если сохраняю как start.vbs то получаю ошибку... Сейчас буду проверять запуск предыдущего скрипта на калькуляторе...... Проверил при коде: Код:
ProgStart = Array("C:\Windows\System32\calc.exe", "08:00:00", "18:00:00", _ +++ 20.07.2017 16:23:46 C:\Windows\System32\calc.exe Запущено === 20.07.2017 16:23:46 Скрипт завершается и calc.exe висит в процессах Посмотрел в свойствах файлов вкладка безопасность Там есть "система" и стоит полный доступ тоесть по сути файлы должны запускаться от имени система! |
Цитата:
Цитата:
+++ 20.07.2017 16:31:53,62 C:\Program Files\cpustats\start.bat Selected "C:\Program Files\cpustats\dau\cpustats.exe" +++ 20.07.2017 16:31:53,63 "C:\Program Files\cpustats\dau\cpustats.exe" Try start === 20.07.2017 16:31:53,63 C:\Program Files\cpustats\start.bat Exit При запуске скрипта через планировщик от имени системы: +++ 20.07.2017 16:33:07,62 C:\Program Files\cpustats\start.bat Selected "C:\Program Files\cpustats\dau\cpustats.exe" +++ 20.07.2017 16:33:07,62 "C:\Program Files\cpustats\dau\cpustats.exe" Try start === 20.07.2017 16:33:07,67 C:\Program Files\cpustats\start.bat Exit Время в системе не совсем понял вопроса? 16:34:) |
Цитата:
Для отладки скрипта "Уже наваял" я вставил отладочную строку (см. выше, выделено красным). Что появилось в лог-файле? В первой половине дня в каком виде выдаётся результат команды в командном окне Echo "%Time%" |
По порядку скрипт что ниже работает как надо... Программа в диспетчере появляется хоть при запуске в ручную, хоть при запуске через планировщик
Скрипт
Код:
@Echo Off Дальше скрипт "А тут уже наваял" (ни чего не менял) При запуске в ручную пишет в логе: +++ 20.07.2017 16:51:00,36 C:\Program Files\cpustats\start.bat Started !!! Testing If 1080000 LEQ 1165100 If 1165100 LSS 1160000 Call :Starting "C:\Program Files\7-Zip\7zG.exe" !!! Testing If 1170000 LEQ 1165100 If 1165100 LSS 1240000 Call :Starting "C:\Program Files\WinRar\WinRar.exe" !!! Testing If 1000000 LEQ 1165100 If 1165100 LSS 1060000 Call :Starting "C:\Program Files\WinRar\WinRar.exe" === 20.07.2017 16:51:00,42 C:\Program Files\cpustats\start.bat Exit При запуске из планировщика пишет в логе: +++ 20.07.2017 16:52:44,72 C:\Program Files\cpustats\start.bat Started !!! Testing If 1080000 LEQ 1165244 If 1165244 LSS 1160000 Call :Starting "C:\Program Files\7-Zip\7zG.exe" !!! Testing If 1170000 LEQ 1165244 If 1165244 LSS 1240000 Call :Starting "C:\Program Files\WinRar\WinRar.exe" !!! Testing If 1000000 LEQ 1165244 If 1165244 LSS 1060000 Call :Starting "C:\Program Files\WinRar\WinRar.exe" === 20.07.2017 16:52:44,81 C:\Program Files\cpustats\start.bat Exit результат Echo "%Time%" -->> "16:53:57,01" И если поменять время на 8 утра то Echo "%Time%"-->> " 8:54:57,29" Дальше Если в Ваш старый скрипт вставить строчки (тесть заменить мои программы на калькулятор) строчки
Код:
ProgStart = Array("C:\Windows\System32\calc.exe", "08:00:00", "18:00:00", _ И запустить его через планировщик от имени "СИСТЕМА" В логе появляется: +++ 20.07.2017 16:23:46 Скрипт запущен +++ 20.07.2017 16:23:46 C:\Windows\System32\calc.exe Запущено === 20.07.2017 16:23:46 Скрипт завершается и calc.exe висит в процессах |
Цитата:
!!! Testing If 1170000 LEQ 1165244 If 1165244 LSS 1240000 Перед числами 1 следует отбросить, итого получаем время. Условие, в переводе на понятный формат, получится: текущее время 16:52:44 Если 17:00:00<=16:52:44 и Если 16:52:44<24:00:00 то есть, в мат виде 17:00:00<=16:52:44<24:00:00 - очевидно условие не выполняется Так и по остальным интервалам Задайте корректные интервалы. Цитата:
Попутный вопрос: как я понял, программа cpustats.exe запускается в командном окне. При запуске появляются какие-либо сообщения (в норме и в аварийном случае)? Поискал в сети, это речь об одном и том же?
Цитата:
|
Цитата:
Нет ) на самом деле это обычная программа для Маннинга на процессорах исходное название не помню но в CPUSTATS.EXE это я уже сам переименовал. 2 папки день и ночь нужны потому что в первом случаи майнинг идет на 2 потока а ночью на 4. и эти настройки прописаны в файле config. Насчет окна CMD если запускать в ручную то да в окне есть информация а если запускать с планировщика задачь то он работает в скрытом режиме. Далее. Сейчас нашел немного другую программу суть её в том что она должна запускаться в командной строке с параметрами: xxxx.exe -o stratum+tcp://bcn.pool.minergate.com:45550 -u (user) -p x -t 2 - это запуск днем xxxx.exe -o stratum+tcp://bcn.pool.minergate.com:45550 -u (user) -p x -t 4 - это запуск ночью Разница в том что программа та что сейчас она берет настройки из файла, а программа которую нашел запускается с параметрами.. Уважаемый megaloman может быть получиться сделать скрипт который будет просто подставлять нужные команды для запуска файла. Тоесть файл будет 1 но запускаться должен либо с t2 либо с t4 Временной интервал с 8 утра до 18:00 с t2 а с 21:00 до 6:00 с параметром t4 Примерно я себе это представляю так делаю 2 bat фала и пописываю разные команды, скрипт должен выбрать какой bat файл запустить.. |
p.igor.kin, а моим батником по времени программа запускается? Вы хотите получить те же грабли, какая разница, что запускать, если оно не запустится. У меня была другая идея: сначала запускаем батник, который копирует в другое место программу с нужным конфигом, а затем оттуда уже запускаем программу. В задании прописываем батник, и во втором задании запуск программы, кажется в планировщике есть возможность запуска с задержкой. Не могу посмотреть, пишу с мобилки
|
Цитата:
Цитата:
+++ 21.07.2017 16:11:13,61 C:\Program Files\cpustats\start.bat Started !!! Testing If 1080000 LEQ 1161113 If 1161113 LSS 1180000 Call :Starting "C:\Program Files\cpustats\dau\cpustats.exe" +++ 21.07.2017 "C:\Program Files\cpustats\dau\cpustats.exe" Selected +++ 21.07.2017 16:11:13,69 "C:\Program Files\cpustats\dau\cpustats.exe" Try start !!! Testing If 1200000 LEQ 1161113 If 1161113 LSS 1240000 Call :Starting "C:\Program Files\cpustats\night\cpustats.exe" !!! Testing If 1000000 LEQ 1161113 If 1161113 LSS 1060000 Call :Starting "C:\Program Files\cpustats\night\cpustats.exe" === 21.07.2017 16:11:13,71 C:\Program Files\cpustats\start.bat Exit Получается что все работает? Остается проверить только время и какая программа запускаеться |
p.igor.kin, Вы счастливы? Я рад за Вас :)
Для CMD я бы посоветовал:
1. удалить или закомментировать тестовую выдачу в лог-файл Код:
Код:
Код:
Цитата:
+++ 21.07.2017 16:11:13,61 C:\Program Files\cpustats\start.bat Started - стартовал батник +++ 21.07.2017 "C:\Program Files\cpustats\dau\cpustats.exe" Selected - для запуска выбрана именно эта программа (виноват, забыл добавить отображение времени, в скрипте исправил) +++ 21.07.2017 16:11:13,69 "C:\Program Files\cpustats\dau\cpustats.exe" Try start - пытаемся её запустить === 21.07.2017 16:11:13,71 C:\Program Files\cpustats\start.bat Exit - батник отработал Что касается VBS-скрипта, то проблема осталась
1. Судя по Вашим сообщениям, если скрипт запускать руками, то программа cpustats.exe нормально запускается и скрипт завершается
2. При запуске скрипта из планировщика от имени системы скрипт запускается и постоянно находится в памяти. Программа cpustats.exe не запускается. 3. При запуске скрипта из планировщика от имени системы скрипт запускается, запускает программу calc.exe и благополучно завершается. То есть, логика скрипта вроде бы работает, но причины проблем с запуском именно программы cpustats.exe не определены. |
Уважаемый megaloman хочу выразить Вам огромную благодарность за помощь в написании данного скрипта. Спасибо Вам большое!
Скрипт работает как надо! Единственное хотелось бы немного его изменить отключить файл лог и сделать завершение процессов перед запуском. (на всякий случай) я немного переименовал exe файлы для понятливости. Скажите если я в самом начале Вашего скрипта сделаю так: @Echo Off taskkill /f /im cpudau.exe > Nul taskkill /f /im cpunight.exe > Nul timeout /T 2 Set /A N=3 Будут ли у меня убиваться данные процессы если они есть, а затем запускаться новые? и будет ли такой скрипт вообще правильным? И как полностью убрать файл лог? (программа скрытая лишний лог ни к чему) |
Значит, таки майнер лепите?
|
p.igor.kin: "...хотелось бы немного его изменить..."
Код:
@Echo Off |
Время: 22:47. |
Время: 22:47.
© OSzone.net 2001-