Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт запуска программ по времяни

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт запуска программ по времяни

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Прошу прощения если пишу не в ту ветку форума. Нужна ваша помощь в написании скрипта который мог бы запускать определенный exe файл в зависимости от времени на компьютере. К сожалению я сам работал очень мало со скриптами и сам написать такой не смогу

Подробнее о задаче: допустим включается компьютер с 8 утра и до 5 вечера в любое время в этот момент должен запуститься файл 1.exe, и он же должен сам закончить свое выполнение часов в 16:30 а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра. Предполагается что данный скрипт будет запускаться планировщиком задач при включении компьютера. оба файла лежат по пути (C:\Program Files\cpustats)

Помогите пожалуйста. Очень нужно для работы

Если нужны доп. данные пишите. Заранее большое спасибо

Отправлено: 12:42, 29-06-2017

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить 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)
Но я бы предложил иное: это сообщение автоматически закрывается, я перестарался, поставил время ожидания 3600 сек (смотрите в конец Вашей строки), лучше поставьте мЕньшее время (в приведенной строке я поставил 6 сек). Для разбирательства в ручном режиме будет полезно.
Цитата p.igor.kin:
И ещё я заметил что скрипт постоянно висит в диспетчере задач. Тоесть он постоянно работает. Можно как нибудь сделать что бы после запуска нужной программы скрипт закрывал сам себя. »
Это не совсем так. Скрипт запускает программу, а после этого, если всё благополучно, завершает работу. Исключение: когда есть запрос на ответ (например, сообщение об ошибке) он будет ждать ответа.
А вообще-то, раз пошла такая пьянка, я бы предложил вести лог-файл работы скрипта. И я, наверное, этим озабочусь.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 12:49, 18-07-2017 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемый megaloman а может быть вы подскажете как прикрутить Ваш скрипт что бы он работал при загрузке компьютера а не при входе пользователя в систему. Основная задача стоит в этом. А я с 9 утра бьюсь с этой задачей и ни чего не выходит(

Отправлено: 12:55, 18-07-2017 | #22


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


p.igor.kin, Сделаю лог-файл, попробую прикрутить, без информации о том, что происходит, соваться нечего.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:12, 18-07-2017 | #23


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


огромное спасибо будем ждать

Отправлено: 13:16, 18-07-2017 | #24


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 20170718.png
(51.2 Kb, 4 просмотров)

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
Благодарности: 0

Профиль | Отправить 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


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


p.igor.kin, Итак: Скрипт в задании запускается. Проблема с запуском программы. Попробуем в этом убедиться. Закомментируйте запуск программы, то есть строку:
Код: Выделить весь код
'        LL = WShell.Run("""" + PrgName + """", 7, False)
Что в лог-файле при запуске? От чьего имени создано задание на запуск?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 08:43, 19-07-2017 | #27


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить 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


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


p.igor.kin, Естественно, программа не запустилась, коль мы её и не запускали.
Но убедились, что логика скрипта работает верно. У меня нет мыслей, почему не отрабатывает Run, похоже, для запуска программы необходимо ответить на какой-то запрос, который Вы не можете видеть, так как задание запущено от другого пользователя при запуске системы

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:51, 19-07-2017 | #29


Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
У меня нет мыслей, почему не отрабатывает 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 Скрипт завершается

Очень странно так как данный пользователь обладает правами равносильными пользователю ПК

Отправлено: 08:53, 19-07-2017 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт запуска программ по времяни

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Политика запуска программ 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




 
Переход