Bastel
15-01-2017, 19:11
Всем привет. Есть у меня 2-а процесса(файла):
1) D:\Games\League of Legends\LeagueClient.exe
2) D:\Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.158\deploy\League of Legends.exe
Задачи:
1) Мне нужно что бы была постоянная проверка(1-2 секунды).
2) Если запущен процесс 2, то закрыть процесс 1.
3)1 запущен 2 не запущен - нечего не делать; 2 запущен 1 не запущен - нечего не делать; 1 не запущен 2 не запущен - запустить 1
Один человек на другом форуме помог мне придти к такому коду:
@echo off
set "p1=D:\Games\League of Legends\LeagueClient.exe"
set "p2=League of Legends.exe"
call :parse "%p1%" exe1 p1
:loop
set /a is_p1=0,is_p2=0
:: мне нужно что бы была постоянная проверка(1-2 секунды)
>nul timeout /t 2 /nobreak
for /f "tokens=1-2 delims=. " %%a in ('tasklist /fo table /nh /fi "imagename eq %p1%"') do if /i "%%a.%%b" equ "%p1%" set /a is_p1+=1
for /f "tokens=1-3 delims=. " %%a in ('tasklist /fo table /nh /fi "imagename eq %p2%"') do if /i "%%a %%b.%%c" equ "%p2%" set /a is_p2+=1
:: Если запущен процесс 2, то закрыть процесс 1
if %is_p2% equ 1 >nul taskkill /im "%exe1" /f /t
:: Если не запущены процессы 1 или 2, то запустить процесс 1
if %is_p2% equ 0 (if %is_p1% equ 0 2>nul start "" "%exe1%")
goto:loop
____________________________________________________________________
:parse
setlocal
set "t=%~1"
set "t="%t:\=" "%""
for %%v in (%t%) do set "t=%%~v"
endlocal & set "%2=%~1" & set "%3=%t%" exit /b 0
1) D:\Games\League of Legends\LeagueClient.exe
2) D:\Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.158\deploy\League of Legends.exe
Задачи:
1) Мне нужно что бы была постоянная проверка(1-2 секунды).
2) Если запущен процесс 2, то закрыть процесс 1.
3)1 запущен 2 не запущен - нечего не делать; 2 запущен 1 не запущен - нечего не делать; 1 не запущен 2 не запущен - запустить 1
Один человек на другом форуме помог мне придти к такому коду:
@echo off
set "p1=D:\Games\League of Legends\LeagueClient.exe"
set "p2=League of Legends.exe"
call :parse "%p1%" exe1 p1
:loop
set /a is_p1=0,is_p2=0
:: мне нужно что бы была постоянная проверка(1-2 секунды)
>nul timeout /t 2 /nobreak
for /f "tokens=1-2 delims=. " %%a in ('tasklist /fo table /nh /fi "imagename eq %p1%"') do if /i "%%a.%%b" equ "%p1%" set /a is_p1+=1
for /f "tokens=1-3 delims=. " %%a in ('tasklist /fo table /nh /fi "imagename eq %p2%"') do if /i "%%a %%b.%%c" equ "%p2%" set /a is_p2+=1
:: Если запущен процесс 2, то закрыть процесс 1
if %is_p2% equ 1 >nul taskkill /im "%exe1" /f /t
:: Если не запущены процессы 1 или 2, то запустить процесс 1
if %is_p2% equ 0 (if %is_p1% equ 0 2>nul start "" "%exe1%")
goto:loop
____________________________________________________________________
:parse
setlocal
set "t=%~1"
set "t="%t:\=" "%""
for %%v in (%t%) do set "t=%%~v"
endlocal & set "%2=%~1" & set "%3=%t%" exit /b 0