BAT для перезапуска программы по времени
Всем добрый день прошу помощи с на написанием bat для запуска и выключения программы в определённые промежутки времени.
Ситуация:
Нужно запустить программу bat файлом и через 13минут эту программу тем же bat файлом перезапустить автоматически, осложняется тем что в системе запущенно несколько одинаковых программ и как выключить именно ту которая запустилась с bat для меня секрет.
|
Цитата:
Цитата xctr
как выключить именно ту которая запустилась с bat для меня секрет. »
|
Вариант с именем процесса сразу отпадает, а как насчет того, чтобы перед запуском получить PID уже запущенных процессов с таким именем, после запуска еще раз получить список PID, взять недавно появившийся, который и является PID запущенной скриптом программы, а потом, когда подойдет время завершения - завершить по PID?
|
Ivan Bardeen |
18-02-2011 19:43 1616473 |
Цитата:
Цитата xctr
Нужно запустить программу bat файлом и через 13минут эту программу тем же bat файлом перезапустить автоматически »
|
Вот VB скрипт
Код:
strComputer = "."
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "Notepad.exe", , , intProcessID
WScript.Sleep 780000 'ждем 13 минут
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessId = " & intProcessID)
For Each objProc In colProcessList
objProc.Terminate()
Next
objProcess.Create "Notepad.exe"
|
Цитата:
Цитата Anonymоus
Вариант с именем процесса сразу отпадает, а как насчет того, чтобы перед запуском получить PID уже запущенных процессов с таким именем, после запуска еще раз получить список PID, взять недавно появившийся, который и является PID запущенной скриптом программы, а потом, когда подойдет время завершения - завершить по PID? »
|
не подойдёт программы постоянно пере запускаются.
Ivan Bardeen,
подскажите, а где в этом скрипте задаются параметры для запуска? Программа запускается с определёнными параметрами (к ярлыку дописываю).
|
Ivan Bardeen |
18-02-2011 19:58 1616482 |
Цитата:
Цитата xctr
подскажите, а где в этом скрипте задаются параметры для запуска? Программа запускается с определёнными параметрами (к ярлыку дописываю). »
|
Прямо в кавычках
напрмер графический интерфейс программы shutdown
Код:
strComputer = "."
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "shutdown -i", , , intProcessID
WScript.Sleep 780000
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessId = " & intProcessID)
For Each objProc In colProcessList
objProc.Terminate()
Next
objProcess.Create "shutdown -i"
|
Ivan Bardeen, проверил что то не то с этим скриптом не пере запускает он программу через указанное время.
|
Ivan Bardeen |
19-02-2011 08:25 1616766 |
Цитата:
Цитата xctr
Ivan Bardeen, проверил что то не то с этим скриптом не пере запускает он программу через указанное время. »
|
Что за программа и покажите код скрипта, который у вас получился.
|
Цитата:
Цитата xctr
запустить программу bat файлом и через 13минут эту программу тем же bat файлом перезапустить автоматически »
|
Код:
@echo off
set PNAME=notepad.exe
set PPATH=%windir%\system32\notepad.exe
set TITLE=%RANDOM%%RANDOM%
TITLE %TITLE%
:LOOP
(Start "" "%PPATH%"
ping -w 780000 192.0.2.0 -n 1 >nul
for /f "tokens=2 delims=," %%a in ('TaskList /NH /FO CSV /FI "WINDOWTITLE eq %TITLE%"') do (
for /f "skip=1" %%b in ('WMIC PROCESS WHERE "ParentProcessId=%%~a AND Name='%%PNAME%%'" Get ProcessId^,SessionID') do (
taskkill /PID "%%b"
)))
GoTo:LOOP
|
Время: 15:24.
© OSzone.net 2001-