Показать полную графическую версию : bat файл, для проверки колва процессов запущенных
Sargezzz
03-04-2018, 18:37
Здравствуйте.
Подскажите, как написать bat файл, который будет отрабатывать след. ситуацию
в диспетчере задач крутятся два процесса одинаковых, под разными PID
proc.exe pid 888
proc.exe pid 999
как проверять, что если таких процессов меньше 2, то запускать службу, например, service1 ?
заранее благодарен!
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=proc.exe
for /f "usebackq delims=" %%i in (`tasklist.exe /nh /fi "IMAGENAME eq %sFileName%" ^| 2^>nul find.exe /i "%sFileName%" ^| find.exe /c /v ""`) do if %%i lss 2 net.exe start "service1"
endlocal
exit /b 0
Sargezzz,
@echo off
for /f "tokens=1 delims=" %%# in ('qprocess^|find /i /c /n "proc.exe"') do (
set number=%%#
)
if %number% EQU 1 sc start SharedAccess
SharedAccess - название вашей службы.
Sargezzz
03-04-2018, 19:40
Казбек, подскажите, а как вывести на экран командной строки количество найденных процессов?
у меня такое ощущение, что не находит эти процессы, хотя в диспетчере задач они запущены.
подскажите, а как вывести на экран командной строки количество найденных процессов? »
for /f "tokens=1 delims=" %%# in ('qprocess^|find /i /c /n "proc.exe"') do (
set number=%%#
)
pause
Sargezzz
03-04-2018, 19:45
Казбек, по всей видимости он у меня смотрит процессы под моим пользователем, а как смотреть процессы под всеми пользователями? или под определенным?
а как вывести на экран командной строки количество найденных процессов? »
Оно высчитывается в процессе работы пакетных файлов.
Можете просто посмотреть глазками:
tasklist.exe /fi "IMAGENAME eq proc.exe"
или:
qprocess.exe | find.exe /i "proc.exe"
Sargezzz
03-04-2018, 19:50
Iska, по всей видимости он у меня смотрит процессы под моим пользователем, а как смотреть процессы под всеми пользователями? или под определенным?
или под определенным? »
TASKLIST /v /fi "username eq Sargezzz"
Насчет той утилиты, что использовал я, рекомендую к ознакомлению примеры: Windows Server 2008 – How to use the Query Process command (https://uwnthesis.wordpress.com/2013/10/11/windows-server-2008-how-to-use-the-query-process-command/)
он у меня смотрит процессы под моим пользователем »
Да, вы правы:
If you do not specify a process with UserName, SessionName, or SessionID, then QUERY PROCESS will return only the processes that belong to the current user.
Sargezzz, с tasklist.exe у меня работает. Для qprocess.exe попробуйте изменить строку на:
for /f "tokens=1 delims=" %%# in ('qprocess.exe * ^|find /i /c /n "proc.exe"') do (
или:
for /f "tokens=1 delims=" %%# in ('qprocess.exe "proc.exe" ^|find /i /c /n "proc.exe"') do (
Sargezzz
03-04-2018, 20:09
Iska, Казбек, у меня почему-то скрипт возвращает, что процессов 0, а tasklist.exe видит эти два процесса. Ниже приложил результат выполнения скрипта:
Sargezzz, смотрите два наших предыдущих сообщения и правьте ранее выложенный код, либо используйте вариант с tasklist.exe.
Sargezzz
03-04-2018, 20:24
Iska, спасибо большое всем. Заработало!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.