Во время подсчета вы также можете собрать PID, чтобы при необходимости убить их.
:: Q:\Test\2018\11\02\SO_53115422.cmd
@Echo off & SetLocal EnableExtensions EnableDelayedExpansion
Set "Prog=Ulti.exe"
::Set "Prog=firefox.exe"
Set "Count="
Set "PIDs="
for /f "tokens=2" %%A in (
'TaskList /FI "IMAGENAME eq %Prog%" ^| Findstr /i "%Prog%"'
) do (
Set /A Count+=1
Set PIDs=!PIDs! /PID %%A
)
If defined Count (
If !Count! lss 3 (
echo taskkill %PIDs%
echo restart %Prog%
) else (
echo %Prog% running %Count% times [%PIDs%]
)
) else (
Echo %Prog% not running
Echo start %Prog%
)
Пример вывода:
> SO_53115422
Ulti.exe running 5 times [ /PID 3664 /PID 10332 /PID 3544 /PID 8996 /PID 11192]
> SO_53115422
Ulti.exe not running
start Ulti.exe
> SO_53115422
taskkill /PID 8056 /PID 2704
restart Ulti.exe
Команда taskkill отображается только во время тестирования