|
Компьютерный форум 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 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать 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 байт свободно |
Отправлено: 16:15, 17-07-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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") Set WShell = CreateObject("WScript.Shell") 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 LL = WShell.Run("""" + PrgName + """", 7, False) If Err.Number <> 0 Then Set FSO = CreateObject("Scripting.FileSystemObject") Msg = "" If Not FSO.FileExists(PrgName) Then Msg = vbCrLf + "Файл не найден" + vbCrLf LL = WShell.Popup("Обратитесь в техподдержку" + vbCrLf + PrgName + Msg + vbCrLf + CStr(TBeg) + " " + CStr(TEnd) + " " + CStr(Time()) + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description, 3600, "Программа не запускается", 16) WScript.Quit End If End If Next On Error GoTo 0 |
------- Отправлено: 16:50, 17-07-2017 | #12 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Выходит CMD окно в котором написано
failed to open config file config.txt Press any key to exit Немнго поясню при запуске программы cpustats.exe он цепляет конфигурацию с файла config.txt который лежит в папке с программой. Судя по всему Программа пытаеться запуститься но не цепляет данный файл. В ручную всю запускается и работает нормально. |
Отправлено: 17:00, 17-07-2017 | #13 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 17:04, 17-07-2017 | #14 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Ваша программа запускается, но она не в состоянии найти файлы, необходимые для нормальной работы. Вот вариант.
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") Set FSO = CreateObject("Scripting.FileSystemObject") 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) If Err.Number <> 0 Then Msg = "" If Not FSO.FileExists(PrgName) Then Msg = vbCrLf + "Файл не найден" + vbCrLf LL = WShell.Popup("Обратитесь в техподдержку" + vbCrLf + PrgName + Msg + vbCrLf + CStr(TBeg) + " " + CStr(TEnd) + " " + CStr(Time()) + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description, 3600, "Программа не запускается", 16) WScript.Quit End If End If Next On Error GoTo 0 |
------- Отправлено: 17:26, 17-07-2017 | #15 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Уважаемый 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, 18-07-2017 в 09:45. Отправлено: 09:39, 18-07-2017 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата p.igor.kin:
|
|
Отправлено: 10:07, 18-07-2017 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать p.igor.kin, Вы уверены, что не запускается именно скрипт?
|
Отправлено: 10:50, 18-07-2017 | #18 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Цитата Iska:
1) скрипт не запускается 2) скрипт запускается но уже ему не хватает прав на запуск программы p.s проделал такой опыт. переименовал папку где лежит программа. Запустил скрипт руками и получил ошибку. Тут все верно. Сделал задание в планировщике с выполнять вне зависимости регистрации пользователя запустил задачу и не получил ни чего. Ни ошибки ни запуска программы. Перепробовал все что только можно все работает только при "выполнять только для зарегистрированного пользователя" А мне это не подходит( |
|
Последний раз редактировалось p.igor.kin, 18-07-2017 в 11:44. Отправлено: 11:02, 18-07-2017 | #19 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Друзья помогите пожалуйста довести до ума поставленную задачу. Заранее всем спасибо! При ручном запуске скрипт полностью работает как надо, а через планировщик не хочет
![]() Рабочий скрипт
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") Set FSO = CreateObject("Scripting.FileSystemObject") 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) If Err.Number <> 0 Then Msg = "" If Not FSO.FileExists(PrgName) Then Msg = vbCrLf + "Файл не найден" + vbCrLf LL = WShell.Popup("Обратитесь в техподдержку" + vbCrLf + PrgName + Msg + vbCrLf + CStr(TBeg) + " " + CStr(TEnd) + " " + CStr(Time()) + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description, 3600, "Программа не запускается", 16) WScript.Quit End If End If Next On Error GoTo 0 |
Отправлено: 12:45, 18-07-2017 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Политика запуска программ | 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 |
|