|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт запуска программ по времяни |
|
|
CMD/BAT - [решено] Скрипт запуска программ по времяни
|
Новый участник Сообщения: 27 |
Профиль | Отправить PM | Цитировать Добрый день. Прошу прощения если пишу не в ту ветку форума. Нужна ваша помощь в написании скрипта который мог бы запускать определенный exe файл в зависимости от времени на компьютере. К сожалению я сам работал очень мало со скриптами и сам написать такой не смогу
Подробнее о задаче: допустим включается компьютер с 8 утра и до 5 вечера в любое время в этот момент должен запуститься файл 1.exe, и он же должен сам закончить свое выполнение часов в 16:30 а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра. Предполагается что данный скрипт будет запускаться планировщиком задач при включении компьютера. оба файла лежат по пути (C:\Program Files\cpustats) Помогите пожалуйста. Очень нужно для работы Если нужны доп. данные пишите. Заранее большое спасибо |
|
Отправлено: 12:42, 29-06-2017 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать p.igor.kin,
Цитата 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)
Цитата p.igor.kin:
А вообще-то, раз пошла такая пьянка, я бы предложил вести лог-файл работы скрипта. И я, наверное, этим озабочусь. |
||
------- Отправлено: 12:49, 18-07-2017 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Уважаемый megaloman а может быть вы подскажете как прикрутить Ваш скрипт что бы он работал при загрузке компьютера а не при входе пользователя в систему. Основная задача стоит в этом. А я с 9 утра бьюсь с этой задачей и ни чего не выходит(
|
Отправлено: 12:55, 18-07-2017 | #22 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать p.igor.kin, Сделаю лог-файл, попробую прикрутить, без информации о том, что происходит, соваться нечего.
|
------- Отправлено: 13:12, 18-07-2017 | #23 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать огромное спасибо будем ждать
|
Отправлено: 13:16, 18-07-2017 | #24 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать p.igor.kin,
Вот вариант скрипта, при котором его исполнение можно проконтролировать в лог-файле
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") 'LogFile = WScript.ScriptFullName + ".log" ' Если лог-файл пишется рядом со скриптом с именем скрипта LogFile = "Z:\яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя.log" ' Прописать полный путь к лог-файлу Set WShell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Call WriteLogFile(LogFile, "+++", "Скрипт запущен") N1 = LBound(ProgStart) N2 = UBound(ProgStart) NProg = (N2 - N1 + 1) / 3 On Error Resume Next 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))) On Error Resume Next If TBeg <= Time() And Time() <= TEnd Then WShell.CurrentDirectory = FSO.GetFile(PrgName).ParentFolder LL = WShell.Run("""" + PrgName + """", 7, False) ErrMsg = PrgName + " Код ошибки " + CStr(Err.Number) + " " + Err.Description If Err.Number <> 0 Then Call WriteLogFile(LogFile, "!!!", ErrMsg) Msg = "" If Not FSO.FileExists(PrgName) Then Msg = vbCrLf + "Файл не найден" + vbCrLf Call WriteLogFile(LogFile, "???", PrgName + " Файл не найден") End If ' LL = WShell.Popup("Обратитесь в техподдержку" + vbCrLf + PrgName + Msg + vbCrLf + CStr(TBeg) + " " + CStr(TEnd) + " " + CStr(Time()) + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description, 6, "Программа не запускается", 16) Else Call WriteLogFile(LogFile, "+++", PrgName + " Запущено") End If End If Next On Error GoTo 0 Call WriteLogFile(LogFile, "===", "Скрипт завершается") Sub WriteLogFile(FName, Pref, Mess) Set FSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set FOut = FSO.OpenTextFile(FName, 8, True) FOut.WriteLine Pref + " " + CStr(Now()) + " " + Mess FOut.Close ' MsgBox Pref + " " + CStr(Now()) + " " + Mess On Error GoTo 0 End Sub Попробуйте этот скрипт. Посмотрите, создаётся ли лог-файл. У меня скрипт благополучно прикрутился в назначенные задания при запуске - смотрю по логу скрипта. Но у меня комп не в домене. Если у Вас проблемы - ИМХО, где-то что-то с доступом. У меня Win 7/32 |
------- Отправлено: 18:02, 18-07-2017 | #25 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать У меня компьютер в домене на 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, 19-07-2017 в 08:40. Отправлено: 08:21, 19-07-2017 | #26 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 08:43, 19-07-2017 | #27 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Закомментировал строчку, Задание все так же от имени "СИСТЕМА"
в лог файле +++ 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 Скрипт завершается Но на самом деле программа не запустилась! |
Отправлено: 08:46, 19-07-2017 | #28 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать p.igor.kin, Естественно, программа не запустилась, коль мы её и не запускали.
Но убедились, что логика скрипта работает верно. У меня нет мыслей, почему не отрабатывает Run, похоже, для запуска программы необходимо ответить на какой-то запрос, который Вы не можете видеть, так как задание запущено от другого пользователя при запуске системы |
------- Отправлено: 08:51, 19-07-2017 | #29 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
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 Скрипт завершается Очень странно так как данный пользователь обладает правами равносильными пользователю ПК |
|
Отправлено: 08:53, 19-07-2017 | #30 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Политика запуска программ | 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 |
|