Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт запуска программ по времяни (http://forum.oszone.net/showthread.php?t=327973)

p.igor.kin 29-06-2017 12:42 2748080

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

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

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

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

alpap 29-06-2017 12:57 2748090

p.igor.kin,
в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30
по аналогии для 2.exe

p.igor.kin 29-06-2017 13:07 2748097

Цитата:

Цитата alpap
в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30
по аналогии для 2.exe »


Извините пожалуйста а как сделать в планировщике 1 задачу для старта при включении компа и завершить её в 16:30 так что бы эта задача работала каждый день? Там есть такой пункт завершить задачу но там ставиться число и время, тоесть эта задача отработает 1 раз

И самое главное как в планировщике задать запуск 1.exe с 8 до 17 в любове время и запуск 2.exe с 0 до 7 ?

p.igor.kin 29-06-2017 13:51 2748113

Цитата:

Цитата megaloman
Не понимаю. Запускать при включении? Или после включения в неопределённое случайное время? »

Компьютер может быть включен как в 8 часов так в 9,10, 11 и т.д. Дак вот нужно что бы скрипт запускался при включении компьютера(это я планирую сделать через планировщик или поставить тупо в автозагрузку) Дальше скрипт должен смотреть сколько времени на компьютере и уже в зависимости от времени запускать файл либо 1.exe либо 2.exe

Busla 29-06-2017 15:04 2748128

p.igor.kin, если компьютер включили до восьми часов, 1.exe вообще не должен запускаться?

alpap 29-06-2017 19:10 2748163

Цитата:

Цитата p.igor.kin
как в 8 часов так в ..»

а сколько времени нужно для работы, например, 1.exe, если компьютер включили в 16:25, хватит 5ти минут ему, ведь в 16:30 он должен быть остановлен и вопрос Busla тоже актуален.

megaloman 29-06-2017 21:24 2748197

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

Пропишите вместо моих примеров реальные экзешники и диапазоны времени запуска. Сохраните скрипт в файл с расширением .vbs, например, Starter.vbs. Создайте на него задание в планировщике.
Возможно, в планировщике его надо запускать как, например:
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

Сохраните скрипт в файл с расширением .vbs, например, ProgKill.vbs. Запускать его надо с параметром, например:
Диск:\Путь\ProgKill.vbs "notepad.exe".
Создайте на него задание в планировщике на нужное время.
Возможно, в планировщике его надо запускать как, например:
C:\Windows\System32\wscript.exe Диск:\Путь\ProgKill.vbs "notepad.exe"
На каждую программу задание в планировщике
Цитата:

Цитата p.igor.kin
а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра »

В Вашей постановке нет логики: если, согласно утверждению, задача запустится в 6час 1 мин, то её никаким образом не убить в 6 часов :)
Поэтому надо чётко продумать хронологию событий: нельзя запускать программу после того, как Вы декларировали её завершение.

megaloman 30-06-2017 14:09 2748298

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



бремени, времени, семени, темени, пламени, стремени, знамени, племени, имени, вымени

p.igor.kin 17-07-2017 10:48 2751937

Друзья простите пожалуйста за долгое отсутствие уезжал в отпуск. Посмотрел то что вы тут накидали (варианты,идеи) не очень конечно понял. Может я так плохо объяснил а может скрипт такой сложный. Давайте поступим немного по другому.

Задача: Пользователь включает компьютер (это может быть в любое время) Нужен скрипт который при включении компьютера будет смотреть сколько времени на компьютере и будет запускать нужную программу. Предполагается что данный скрипт будет лежать по пути (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 код:

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""06:00:00")
                
Set WShell CreateObject("WScript.Shell")

N1 LBound(ProgStart)
N2 UBound(ProgStart)
NProg = (N2 N1 1) / 3
For 1 To NProg
    PrgName 
ProgStart(N1 * (1))
    
TBeg TimeValue(ProgStart(N1 * (1)))
    
TEnd TimeValue(ProgStart(N1 * (1)))
    If 
TBeg <= Time() And Time() <= TEnd Then
        WShell
.Run PrgName7False
    End 
If
Next 



Но при его запуске получаю ошибку: (Если я правильно понял ругается на строку WShell.Run PrgName, 7, False)

p.igor.kin 17-07-2017 15:20 2752000

Файлы точно лежат в папке 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 16:15 2752017

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 байт свободно

megaloman 17-07-2017 16:50 2752025

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


p.igor.kin 17-07-2017 17:00 2752028

Выходит CMD окно в котором написано

failed to open config file config.txt
Press any key to exit

Немнго поясню при запуске программы cpustats.exe он цепляет конфигурацию с файла config.txt который лежит в папке с программой. Судя по всему Программа пытаеться запуститься но не цепляет данный файл. В ручную всю запускается и работает нормально.

p.igor.kin 17-07-2017 17:04 2752031

Цитата:

Цитата megaloman
p.igor.kin, Эта программа запускается в командном окне? Её надо запускать находясь в папке с Exe? »

Да извиняюсь что не уточнил сразу. Думал не критично

megaloman 17-07-2017 17:26 2752035

Ваша программа запускается, но она не в состоянии найти файлы, необходимые для нормальной работы. Вот вариант.
Код:

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


p.igor.kin 18-07-2017 09:39 2752202

Уважаемый 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. Планировщик ни в какую не хочет выполнять данный скрипт( Пишет задача выполняется а ни чего не происходит:(

И ещё скажите пожалуйста я смотрю вы в скрипте сделали проверку на ошибки я попробовал переименовать папку и точно вышла ошибка "обратитесь в тех поддержку". Нельзя ли это убрать? Тоесть если все хорошо скрипт молча запустился и запустил программу, а если что то не так скрипт просто запустился и молча закрылся. И ещё я заметил что скрипт постоянно висит в диспетчере задач. Тоесть он постоянно работает. Можно как нибудь сделать что бы после запуска нужной программы скрипт закрывал сам себя. Извините если прошу слишком многого. Вы и так мне очень сильно помогли. Спасибо!

Iska 18-07-2017 10:07 2752213

Цитата:

Цитата p.igor.kin
Пробовал и 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. »

Попробуйте обрамить пути с пробельными символами кавычками.

Iska 18-07-2017 10:50 2752228

p.igor.kin, Вы уверены, что не запускается именно скрипт?

p.igor.kin 18-07-2017 11:02 2752230

Цитата:

Цитата Iska
p.igor.kin, Вы уверены, что не запускается именно скрипт? »

Я не вижу запускается он или нет. Но программа которую должен запускать скрипт не запускается 100%. Тоесть варианта тут 2

1) скрипт не запускается
2) скрипт запускается но уже ему не хватает прав на запуск программы

p.s проделал такой опыт. переименовал папку где лежит программа. Запустил скрипт руками и получил ошибку. Тут все верно. Сделал задание в планировщике с выполнять вне зависимости регистрации пользователя запустил задачу и не получил ни чего. Ни ошибки ни запуска программы.

Перепробовал все что только можно все работает только при "выполнять только для зарегистрированного пользователя" А мне это не подходит(

p.igor.kin 18-07-2017 12:45 2752260

Друзья помогите пожалуйста довести до ума поставленную задачу. Заранее всем спасибо! При ручном запуске скрипт полностью работает как надо, а через планировщик не хочет :(

Рабочий скрипт
Код:

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


megaloman 18-07-2017 12:49 2752261

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
И ещё я заметил что скрипт постоянно висит в диспетчере задач. Тоесть он постоянно работает. Можно как нибудь сделать что бы после запуска нужной программы скрипт закрывал сам себя. »

Это не совсем так. Скрипт запускает программу, а после этого, если всё благополучно, завершает работу. Исключение: когда есть запрос на ответ (например, сообщение об ошибке) он будет ждать ответа.
А вообще-то, раз пошла такая пьянка, я бы предложил вести лог-файл работы скрипта. И я, наверное, этим озабочусь.

p.igor.kin 18-07-2017 12:55 2752263

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

megaloman 18-07-2017 13:12 2752267

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

p.igor.kin 18-07-2017 13:16 2752270

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

megaloman 18-07-2017 18:02 2752336

Вложений: 1
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

p.igor.kin 19-07-2017 08:21 2752418

У меня компьютер в домене на 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 запуск от имени пользователя можно указать только "СИСТЕМА" ибо логины и пароли у всех пользователей разные. Да и странно ещё то что сейчас программы запускаются именно от пользователя "СИСТЕМА", а через скрипт не хотят:(

megaloman 19-07-2017 08:43 2752419

p.igor.kin, Итак: Скрипт в задании запускается. Проблема с запуском программы. Попробуем в этом убедиться. Закомментируйте запуск программы, то есть строку:
Код:

'        LL = WShell.Run("""" + PrgName + """", 7, False)
Что в лог-файле при запуске? От чьего имени создано задание на запуск?

p.igor.kin 19-07-2017 08:46 2752420

Закомментировал строчку, Задание все так же от имени "СИСТЕМА"

в лог файле
+++ 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 Скрипт завершается

Но на самом деле программа не запустилась!

megaloman 19-07-2017 08:51 2752422

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

p.igor.kin 19-07-2017 08:53 2752423

Цитата:

Цитата 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 Скрипт завершается

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

p.igor.kin 19-07-2017 09:21 2752430

Цитата:

Цитата megaloman
Может где-то в безопасности есть ограничение на запуск программ скриптами? »

Сомневаюсь
Цитата:

Цитата megaloman
(Кстати, Вы убрали комментарий от Run?) »

Да убрал
Цитата:

Цитата megaloman
А напрямую в задании программа без скрипта запускается? »

Да напрямую все запускается. от имени "СИСТЕМА"

http://forum.oszone.net/post-2752418-26.html - вот тут я описал как у меня настроено сейчас.

Iska 19-07-2017 09:31 2752432

p.igor.kin, давайте ссылки на Ваши cpustats.exe и прочее, дабы коллега megaloman мог попробовать воспроизвести Ваши действия.

p.igor.kin 19-07-2017 09:40 2752437

Цитата:

Цитата Iska
p.igor.kin, давайте ссылки на Ваши cpustats.exe и прочее, дабы коллега megaloman мог попробовать воспроизвести Ваши действия. »

Думаю особого смысла в этом нет так как у меня доменная сеть и win 64 а у нашего коллеги megaloman нет домена и win x32

Iska 19-07-2017 10:39 2752452

Можно думать, а можно проверить. Дело Ваше.

megaloman 19-07-2017 15:31 2752514

p.igor.kin,
Цитата:

Цитата Iska
Можно думать, а можно проверить. Дело Ваше. »

ИМХО, решение надо искать в политике безопасности. Давайте попробуем заменить Вашу программу чем-нибудь простым и стандартным, например, калькулятором.
Код:

ProgStart = Array("C:\Windows\System32\calc.exe", "08:00:00", "18:00:00", _
                "C:\Windows\System32\calc.exe", "20:00:00", "23:59:59", _
                "C:\Windows\System32\calc.exe", "00:00:00", "06:00:00")

Единственное, он, наверное, у Вас по другому пути. Он запускается? Я подозреваю, что нет. Но если, паче чаяния, он запустится, увидите в лог-файле нормальное сообщение о окончании скрипта и в диспетчере - calc.exe. По крайней мере будет ясно, куда копать.
Альтернатива vbs - cmd. Если этот батник запустит Вашу программу, можно попробовать наваять решение задачи в CMD
Код:

@Echo Off

Set "Prog=C:\Program Files\cpustats\dau\cpustats.exe"

Set "LogFile=Z:\zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.log"

Call :Starting "%Prog%"

GoTo :Eof

:Starting
        >>"%LogFile%" (Echo: &Echo +++ %Date% %Time% %~dpnx0 Selected %1)
       

        If Exist %1 ( 
                Pushd "%~dp1"
                >>"%LogFile%" Echo +++ %Date% %Time% %1 Try start
                Start " " %1 || >>"%LogFile%" Echo --- %Date% %Time% %1 Start not success
                Popd
        ) Else (
                >>"%LogFile%" Echo ??? %Date% %Time% %1 Not Found
        )
        >>"%LogFile%" Echo === %Date% %Time% %~dpnx0 Exit
GoTo :Eof

Попробуйте создать задание на этот батник. Если получится, сообщите, пожалуйста, формат времени в системе. Внутренний голос мне шепчет, что это будет с тем же результатом. ИМХО, надо смотреть настройку безопасности
А тут уже наваял
Код:

@Echo Off

Set /A N=3

Set "Prg1=C:\Program Files\cpustats\dau\cpustats.exe"
Set "Tb_1=08:00:00"
Set "Te_1=18:00:00"

Set "Prg2=C:\Program Files\cpustats\night\cpustats.exe"
Set "Tb_2=20:00:00"
Set "Te_2=24:00:00"

Set "Prg3=C:\Program Files\cpustats\night\cpustats.exe"
Set "Tb_3=00:00:00"
Set "Te_3=06:00:00"


rem Set "LogFile=Z:\zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.log"
Set "LogFile=%~dpnx0.log"

Set "Ttime=%Time:~0,-3%"
Call :ReTime "Ttime"

>>"%LogFile%" (Echo: &Echo +++ %Date% %Time% %~dpnx0 Started)

FOR /L %%i IN (1,1,%N%) DO Call :Program "Prg%%i" "Tb_%%i" "Te_%%i" %Ttime%

>>"%LogFile%" Echo === %Date% %Time% %~dpnx0 Exit

GoTo :Eof

:Program
        Call Set "Prg=%%%~1%%"
        Call Set "Tb=%%%~2%%"
        Call Set "Te=%%%~3%%"
        Call :ReTime "Tb"
        Call :ReTime "Te"
rem >>"%LogFile%" Echo !!! Testing  If %Tb% LEQ %4 If %4 LSS %Te% Call :Starting "%Prg%"
        If %Tb% LEQ %4 If %4 LSS %Te% Call :Starting "%Prg%"
GoTo :Eof

:ReTime
        Call Set "@Ident=%%%~1%%"
        Set "@Ident=%@Ident: =0%"
        Set "@Ident=1%@Ident::=%"
        Call Set /A %~1=%@Ident%
GoTo :Eof

:Starting
        >>"%LogFile%" Echo +++ %Date% %Time% %1 Selected

        If Exist %1 ( 
                Pushd "%~dp1"
                >>"%LogFile%" Echo +++ %Date% %Time% %1 Try start
                Start " " %1 || >>"%LogFile%" Echo --- %Date% %Time% %1 Start not success
                Popd
        ) Else (
                >>"%LogFile%" Echo ??? %Date% %Time% %1 Not Found
        )
GoTo :Eof


p.igor.kin 20-07-2017 16:13 2752786

Прошу прощения за долгий ответ взял скрипт "А тут уже навязал" подставил свою программу назвал как 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", _
                "C:\Windows\System32\calc.exe", "20:00:00", "23:59:59", _
                "C:\Windows\System32\calc.exe", "00:00:00", "06: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 висит в процессах

Посмотрел в свойствах файлов вкладка безопасность Там есть "система" и стоит полный доступ тоесть по сути файлы должны запускаться от имени система!

p.igor.kin 20-07-2017 16:34 2752789

Цитата:

Цитата megaloman
Вы свои программы и время прописали в батнике »

Да

Цитата:

Цитата megaloman
Я Вас просил запустить предыдущий скрипт »

При запуске скрипта в ручную:
+++ 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:)

megaloman 20-07-2017 16:41 2752790

Цитата:

Цитата p.igor.kin
При запуске скрипта через планировщик от имени системы: »

Какого скрипта? Тестового?Программа в диспетчере появилась?
Для отладки скрипта "Уже наваял" я вставил отладочную строку (см. выше, выделено красным). Что появилось в лог-файле?
В первой половине дня в каком виде выдаётся результат команды в командном окне
Echo "%Time%"

p.igor.kin 20-07-2017 16:53 2752792

По порядку скрипт что ниже работает как надо... Программа в диспетчере появляется хоть при запуске в ручную, хоть при запуске через планировщик

Скрипт
Код:

@Echo Off

Set "Prog=C:\Program Files\cpustats\dau\cpustats.exe"

Set "LogFile=Z:\zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.log"

Call :Starting "%Prog%"

GoTo :Eof

:Starting
        >>"%LogFile%" (Echo: &Echo +++ %Date% %Time% %~dpnx0 Selected %1)
       

        If Exist %1 ( 
                Pushd "%~dp1"
                >>"%LogFile%" Echo +++ %Date% %Time% %1 Try start
                Start " " %1 || >>"%LogFile%" Echo --- %Date% %Time% %1 Start not success
                Popd
        ) Else (
                >>"%LogFile%" Echo ??? %Date% %Time% %1 Not Found
        )
        >>"%LogFile%" Echo === %Date% %Time% %~dpnx0 Exit
GoTo :Eof



Дальше скрипт "А тут уже наваял" (ни чего не менял)

При запуске в ручную пишет в логе:
+++ 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", _
                "C:\Windows\System32\calc.exe", "20:00:00", "23:59:59", _
                "C:\Windows\System32\calc.exe", "00:00:00", "06: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 висит в процессах

megaloman 20-07-2017 17:29 2752803

Цитата:

Цитата p.igor.kin
Дальше скрипт "А тут уже наваял" (ни чего не менял)
При запуске в ручную пишет в логе: »

Вы не прописали свои программы и правильное время. Из лога следует, что в указанные временнЫе интервалы нет запускаемой задачи. Расшифрую, например:
!!! 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
- очевидно условие не выполняется
Так и по остальным интервалам
Задайте корректные интервалы.
Цитата:

Цитата p.igor.kin
И запустить его через планировщик от имени "СИСТЕМА"
В логе появляется:
+++ 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 висит в процессах »

Это vbs? Получается очень интересно: калькулятор запускается, а ваша программа не хочет. Надо подумать.
Попутный вопрос: как я понял, программа cpustats.exe запускается в командном окне. При запуске появляются какие-либо сообщения (в норме и в аварийном случае)?
Поискал в сети, это речь об одном и том же?
Цитата:

Информация о CPUSTATS.EXE
Это нежелательная программа.
Этот файл был идентифицирован как программа, которая нежелательна для работы на вашем компьютере. Это состоит из программ, вводящих в заблуждение, вредных или нежелательных.

Если в описании указано, что это часть вредоносного ПО, вы должны немедленно запустить антивирусную и антишпионскую программу. Если это не поможет, не стесняйтесь обращаться к нам за помощью в форумах .

p.igor.kin 21-07-2017 14:09 2752972

Цитата:

Цитата megaloman
Поискал в сети, это речь об одном и том же? »


Нет ) на самом деле это обычная программа для Маннинга на процессорах исходное название не помню но в 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 файл запустить..

megaloman 21-07-2017 15:27 2752987

p.igor.kin, а моим батником по времени программа запускается? Вы хотите получить те же грабли, какая разница, что запускать, если оно не запустится. У меня была другая идея: сначала запускаем батник, который копирует в другое место программу с нужным конфигом, а затем оттуда уже запускаем программу. В задании прописываем батник, и во втором задании запуск программы, кажется в планировщике есть возможность запуска с задержкой. Не могу посмотреть, пишу с мобилки

p.igor.kin 21-07-2017 16:12 2752998

Цитата:

Цитата megaloman
который копирует в другое место программу с нужным конфигом »

Это я могу сам сделать вручную) По мне дак все равно откуда запускать программу :) Только вот странно права безопасности везде одинаковые что на windows что на Program Files

Цитата:

Цитата megaloman
а моим батником по времени программа запускается? »

Да Вашим батником "А тут уже наваял" программа запускается через планировщик. вот лог:

+++ 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

Получается что все работает? Остается проверить только время и какая программа запускаеться

megaloman 21-07-2017 21:59 2753051

p.igor.kin, Вы счастливы? Я рад за Вас :)
Для CMD я бы посоветовал:

1. удалить или закомментировать тестовую выдачу в лог-файл
Код:

rem >>"%LogFile%" Echo !!! Testing  If %Tb% LEQ %4 If %4 LSS %Te% Call :Starting "%Prg%"
2. сделать, чтобы лог-файл писался рядом с батником, если хватает прав.
Код:

rem Set "LogFile=Z:\zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.log"

Set "LogFile=%~dpnx0.log"

3. Если интересен лог-файл только за последний запуск, чтобы он не разрастался, убрать один знак > из строки:
Код:

>>"%LogFile%" (Echo: &Echo +++ %Date% %Time% %~dpnx0 Started)
Цитата:

Цитата p.igor.kin
Остается проверить только время и какая программа запускаеться »

Что проверять, в логе всё написано:

+++ 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 не определены.

p.igor.kin 25-07-2017 10:20 2753859

Уважаемый megaloman хочу выразить Вам огромную благодарность за помощь в написании данного скрипта. Спасибо Вам большое!

Скрипт работает как надо!

Единственное хотелось бы немного его изменить отключить файл лог и сделать завершение процессов перед запуском. (на всякий случай)

я немного переименовал exe файлы для понятливости. Скажите если я в самом начале Вашего скрипта сделаю так:

@Echo Off
taskkill /f /im cpudau.exe > Nul
taskkill /f /im cpunight.exe > Nul
timeout /T 2
Set /A N=3

Будут ли у меня убиваться данные процессы если они есть, а затем запускаться новые? и будет ли такой скрипт вообще правильным?

И как полностью убрать файл лог? (программа скрытая лишний лог ни к чему)

Iska 25-07-2017 17:34 2753950

Значит, таки майнер лепите?

megaloman 25-07-2017 20:45 2754017

p.igor.kin: "...хотелось бы немного его изменить..."

Код:

@Echo Off

Set /A N=3

Set "Prg1=C:\Program Files\7-Zip\7zG.exe"
Set "Tb_1=08:00:00"
Set "Te_1=16:00:00"

Set "Prg2=C:\Program Files\WinRar\WinRar.exe"
Set "Tb_2=17:00:00"
Set "Te_2=24:00:00"

Set "Prg3=C:\Program Files\WinRar\WinRar.exe"
Set "Tb_3=00:00:00"
Set "Te_3=06:00:00"

Set "LogFile=%~dpnx0.log"

rem Если не нужен лог-файл, имя лог-файла сделать пустым
Set "LogFile="

Set Abend="7zG.exe" "WinRar.exe"
For %%k In (%Abend%) Do taskkill /f /im %%k >nul 2>&1

Set "Ttime=%Time:~0,-3%"
Call :ReTime "Ttime"

If Not "%LogFile%"=="" >"%LogFile%" (Echo: &Echo +++ %Date% %Time% %~dpnx0 Started)

FOR /L %%i IN (1,1,%N%) DO Call :Program "Prg%%i" "Tb_%%i" "Te_%%i" %Ttime%

If Not "%LogFile%"=="" >>"%LogFile%" Echo === %Date% %Time% %~dpnx0 Exit

GoTo :Eof

:Program
        Call Set "Prg=%%%~1%%"
        Call Set "Tb=%%%~2%%"
        Call Set "Te=%%%~3%%"
        Call :ReTime "Tb"
        Call :ReTime "Te"
        If %Tb% LEQ %4 If %4 LSS %Te% Call :Starting "%Prg%"
GoTo :Eof

:ReTime
        Call Set "@Ident=%%%~1%%"
        Set "@Ident=%@Ident: =0%"
        Set "@Ident=1%@Ident::=%"
        Call Set /A %~1=%@Ident%
GoTo :Eof

:Starting
        If Not "%LogFile%"=="" >>"%LogFile%" Echo +++ %Date% %1 Selected

        If Exist %1 ( 
                Pushd "%~dp1"
                If Not "%LogFile%"=="" >>"%LogFile%" Echo +++ %Date% %Time% %1 Try start
                Start " " %1 || If Not "%LogFile%"=="" >>"%LogFile%" Echo --- %Date% %Time% %1 Start not success
                Popd
        ) Else (
                If Not "%LogFile%"=="" >>"%LogFile%" Echo ??? %Date% %Time% %1 Not Found
        )
GoTo :Eof



Время: 22:47.

Время: 22:47.
© OSzone.net 2001-