|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт запуска программ по времяни |
|
CMD/BAT - [решено] Скрипт запуска программ по времяни
|
Новый участник Сообщения: 27 |
Добрый день. Прошу прощения если пишу не в ту ветку форума. Нужна ваша помощь в написании скрипта который мог бы запускать определенный exe файл в зависимости от времени на компьютере. К сожалению я сам работал очень мало со скриптами и сам написать такой не смогу
Подробнее о задаче: допустим включается компьютер с 8 утра и до 5 вечера в любое время в этот момент должен запуститься файл 1.exe, и он же должен сам закончить свое выполнение часов в 16:30 а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра. Предполагается что данный скрипт будет запускаться планировщиком задач при включении компьютера. оба файла лежат по пути (C:\Program Files\cpustats) Помогите пожалуйста. Очень нужно для работы Если нужны доп. данные пишите. Заранее большое спасибо |
|
Отправлено: 12:42, 29-06-2017 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать p.igor.kin,
в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30 по аналогии для 2.exe |
Отправлено: 12:57, 29-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Извините пожалуйста а как сделать в планировщике 1 задачу для старта при включении компа и завершить её в 16:30 так что бы эта задача работала каждый день? Там есть такой пункт завершить задачу но там ставиться число и время, тоесть эта задача отработает 1 раз И самое главное как в планировщике задать запуск 1.exe с 8 до 17 в любове время и запуск 2.exe с 0 до 7 ? |
|
Последний раз редактировалось p.igor.kin, 29-06-2017 в 13:23. Отправлено: 13:07, 29-06-2017 | #3 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 13:51, 29-06-2017 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать p.igor.kin, если компьютер включили до восьми часов, 1.exe вообще не должен запускаться?
|
|
Отправлено: 15:04, 29-06-2017 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата p.igor.kin:
|
|
Отправлено: 19:10, 29-06-2017 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать p.igor.kin, В Вашей проблеме 2 задачи.
1. В зависимости от времени включения компьютера необходимо при включении запустить ту или иную программу. Это делает один скрипт и это одна задача в планировщике при включении. 2. В заданное время необходимо завершить указанную программу. Это сделает другой скрипт и это вторая задача планировщика. Если таких программ несколько, то на завершение каждой необходимо задание в планировщике на каждую задачу. ИМХО, проще это реализовать vbs-скриптами. Задача 1. Запускаем предметную программу в зависимости от того, когда запущен скрипт. Скрипт поместить в планировщик на включение.
ProgStart = Array("C:\Windows\System32\mspaint.exe", "08:00:00", "16:30:00", _ "C:\Windows\System32\notepad.exe", "00:00:00", "06:00:00") Set WShell = CreateObject("WScript.Shell") N1 = LBound(ProgStart) N2 = UBound(ProgStart) NProg = (N2 - N1 + 1) / 3 For i = 1 To NProg PrgName = ProgStart(N1 + 3 * (i - 1)) TBeg = TimeValue(ProgStart(N1 + 1 + 3 * (i - 1))) TEnd = TimeValue(ProgStart(N1 + 2 + 3 * (i - 1))) If TBeg <= Time() And Time() <= TEnd Then WShell.Run PrgName, 7, False End If Next Возможно, в планировщике его надо запускать как, например: C:\Windows\System32\wscript.exe Диск:\Путь\Starter.vbs Задача 2 (3). Принудительно завершаем указанный процесс. Для каждого - отдельное задание в планировщике.
Set Arg = WScript.Arguments If Arg.Count = 0 Then WScript.Quit Set WMI = GetObject("winMgmts:") SQuery = "Select *From Win32_Process Where Name=" + """" + Arg(0) + """" Set Processes = WMI.ExecQuery(SQuery) If Processes.Count = 0 Then WScript.Quit On Error Resume Next For Each Process In Processes Process.Terminate Next On Error GoTo 0 Диск:\Путь\ProgKill.vbs "notepad.exe". Создайте на него задание в планировщике на нужное время. Возможно, в планировщике его надо запускать как, например: C:\Windows\System32\wscript.exe Диск:\Путь\ProgKill.vbs "notepad.exe" На каждую программу задание в планировщике Цитата p.igor.kin:
![]() Поэтому надо чётко продумать хронологию событий: нельзя запускать программу после того, как Вы декларировали её завершение. |
|
------- Последний раз редактировалось megaloman, 29-06-2017 в 21:41. Отправлено: 21:24, 29-06-2017 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать p.igor.kin, Пытаюсь переосмыслить постановку, чтобы ограничиться одним скриптом и одним заданием в планировщике:
С 8 утра и до 16.30 вечера должна обязательно выполняться программа 1.exe, до 8.00 и после 17.00 её не должно быть. Таких программ может быть несколько со своими интервалами работы и временем завершения. Вот скрипт, который надо поместить в планировщик и в планировщике повторять его с интервалом, допустим, 5 мин.
' Путь к .exe начало конец завершить ProgStart = Array("C:\Windows\System32\mspaint.exe", "08:00:00", "16:30:00", "17:00:00", _ "C:\Windows\System32\notepad.exe", "00:00:00", "06:00:00", "06:30:00") ErrTime = 30 ' Время отображения сообщения об ошибке сек. Set WShell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set WMI = GetObject("winMgmts:") N1 = LBound(ProgStart) N2 = UBound(ProgStart) NProg = (N2 - N1 + 1) / 4 For i = 1 To NProg PrgName = ProgStart(N1 + 4 * (i - 1)) If FSO.FileExists(PrgName) Then ExeName = FSO.GetFileName(PrgName) TBeg = TimeValue(ProgStart(N1 + 1 + 4 * (i - 1))) TEnd = TimeValue(ProgStart(N1 + 2 + 4 * (i - 1))) Term = TimeValue(ProgStart(N1 + 3 + 4 * (i - 1))) SQuery = "Select *From Win32_Process Where Name=" + """" + ExeName + """" Set Processes = WMI.ExecQuery(SQuery) If Processes.Count = 0 Then If TBeg <= Time() And Time() <= TEnd Then WShell.Run """" + PrgName + """", 7, False End If Else If Time() >= Term Or Time() < TBeg Then On Error Resume Next For Each Process In Processes Process.Terminate Next On Error GoTo 0 End If End If Else LL = WShell.Popup("Отсутствует файл" + vbCrLf + PrgName, ErrTime, "Ошибка при запуске программы", 48) End If Next бремени, времени, семени, темени, пламени, стремени, знамени, племени, имени, вымени |
------- Последний раз редактировалось megaloman, 17-07-2017 в 16:57. Отправлено: 14:09, 30-06-2017 | #8 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Друзья простите пожалуйста за долгое отсутствие уезжал в отпуск. Посмотрел то что вы тут накидали (варианты,идеи) не очень конечно понял. Может я так плохо объяснил а может скрипт такой сложный. Давайте поступим немного по другому.
Задача: Пользователь включает компьютер (это может быть в любое время) Нужен скрипт который при включении компьютера будет смотреть сколько времени на компьютере и будет запускать нужную программу. Предполагается что данный скрипт будет лежать по пути (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 код скрипта
Но при его запуске получаю ошибку: (Если я правильно понял ругается на строку WShell.Run PrgName, 7, False) ![]() |
Последний раз редактировалось p.igor.kin, 17-07-2017 в 11:17. Отправлено: 10:48, 17-07-2017 | #9 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Файлы точно лежат в папке 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:\Program Files\cpustats\night\cpustats.exe", "20:00:00", "23:59:59", _ "C:\Program Files\cpustats\night\cpustats.exe", "00:00:00", "06:00:00") Set WShell = CreateObject("WScript.Shell") N1 = LBound(ProgStart) N2 = UBound(ProgStart) NProg = (N2 - N1 + 1) / 3 For i = 1 To NProg PrgName = ProgStart(N1 + 3 * (i - 1)) TBeg = TimeValue(ProgStart(N1 + 1 + 3 * (i - 1))) TEnd = TimeValue(ProgStart(N1 + 2 + 3 * (i - 1))) If TBeg <= Time() And Time() <= TEnd Then WShell.Run PrgName, 7, False End If Next |
Последний раз редактировалось p.igor.kin, 17-07-2017 в 15:38. Отправлено: 15:20, 17-07-2017 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Политика запуска программ | paull2006 | Microsoft Windows 8 и 8.1 | 8 | 02-10-2015 12:41 | |
CMD/BAT - [решено] скрипт для запуска 2-х программ (.exe) | meGangstaWorld | Скриптовые языки администрирования Windows | 8 | 10-06-2013 21:55 | |
Загрузка - Ускорение запуска программ | d_stor | Microsoft Windows 7 | 0 | 06-01-2013 01:21 | |
CMD/BAT - Как написать CMD скрипт для запуска определенного файла по дате и времени | traxomot | Скриптовые языки администрирования Windows | 1 | 15-12-2010 11:50 | |
VBS/WHS/JS - Скрипт для последовательного запуска нескольких программ | skatet | Программирование и базы данных | 10 | 21-11-2007 17:02 |
|