Показать полную графическую версию : [решено] BAT для перезапуска программы по времени
Всем добрый день прошу помощи с на написанием bat для запуска и выключения программы в определённые промежутки времени.
Ситуация:
Нужно запустить программу bat файлом и через 13минут эту программу тем же bat файлом перезапустить автоматически, осложняется тем что в системе запущенно несколько одинаковых программ и как выключить именно ту которая запустилась с bat для меня секрет.
Anonymоus
18-02-2011, 18:16
как выключить именно ту которая запустилась с bat для меня секрет. »
Вариант с именем процесса сразу отпадает, а как насчет того, чтобы перед запуском получить PID уже запущенных процессов с таким именем, после запуска еще раз получить список PID, взять недавно появившийся, который и является PID запущенной скриптом программы, а потом, когда подойдет время завершения - завершить по PID?
Ivan Bardeen
18-02-2011, 19:43
Нужно запустить программу 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"
Вариант с именем процесса сразу отпадает, а как насчет того, чтобы перед запуском получить PID уже запущенных процессов с таким именем, после запуска еще раз получить список PID, взять недавно появившийся, который и является PID запущенной скриптом программы, а потом, когда подойдет время завершения - завершить по PID? »
не подойдёт программы постоянно пере запускаются.
Ivan Bardeen,
подскажите, а где в этом скрипте задаются параметры для запуска? Программа запускается с определёнными параметрами (к ярлыку дописываю).
Ivan Bardeen
18-02-2011, 19:58
подскажите, а где в этом скрипте задаются параметры для запуска? Программа запускается с определёнными параметрами (к ярлыку дописываю). »
Прямо в кавычках
напрмер графический интерфейс программы 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
Ivan Bardeen, проверил что то не то с этим скриптом не пере запускает он программу через указанное время. »
Что за программа и покажите код скрипта, который у вас получился.
запустить программу 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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.