Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   bat файл, для проверки колва процессов запущенных (http://forum.oszone.net/showthread.php?t=334124)

Sargezzz 03-04-2018 18:37 2806847

bat файл, для проверки колва процессов запущенных
 
Здравствуйте.

Подскажите, как написать bat файл, который будет отрабатывать след. ситуацию

в диспетчере задач крутятся два процесса одинаковых, под разными PID
proc.exe pid 888
proc.exe pid 999

как проверять, что если таких процессов меньше 2, то запускать службу, например, service1 ?

заранее благодарен!

Iska 03-04-2018 19:14 2806856

Код:

@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


Казбек 03-04-2018 19:21 2806860

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 2806863

Казбек, подскажите, а как вывести на экран командной строки количество найденных процессов?

у меня такое ощущение, что не находит эти процессы, хотя в диспетчере задач они запущены.

Казбек 03-04-2018 19:45 2806864

Цитата:

Цитата Sargezzz
подскажите, а как вывести на экран командной строки количество найденных процессов? »

Код:

for /f "tokens=1 delims=" %%# in ('qprocess^|find /i /c /n "proc.exe"') do (
    set number=%%#
)
pause


Sargezzz 03-04-2018 19:45 2806865

Казбек, по всей видимости он у меня смотрит процессы под моим пользователем, а как смотреть процессы под всеми пользователями? или под определенным?

Iska 03-04-2018 19:47 2806866

Цитата:

Цитата Sargezzz
а как вывести на экран командной строки количество найденных процессов? »

Оно высчитывается в процессе работы пакетных файлов.

Можете просто посмотреть глазками:
Код:

tasklist.exe /fi "IMAGENAME eq proc.exe"
или:
Код:

qprocess.exe | find.exe /i "proc.exe"

Sargezzz 03-04-2018 19:50 2806867

Iska, по всей видимости он у меня смотрит процессы под моим пользователем, а как смотреть процессы под всеми пользователями? или под определенным?

Казбек 03-04-2018 20:08 2806869

Цитата:

Цитата Sargezzz
или под определенным? »

  1. Код:

    TASKLIST /v /fi "username eq Sargezzz"
  2. Насчет той утилиты, что использовал я, рекомендую к ознакомлению примеры: Windows Server 2008 – How to use the Query Process command

Цитата:

Цитата Sargezzz
он у меня смотрит процессы под моим пользователем »

Да, вы правы:
Цитата:

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.

Iska 03-04-2018 20:09 2806870

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 2806871

Вложений: 1
Iska, Казбек, у меня почему-то скрипт возвращает, что процессов 0, а tasklist.exe видит эти два процесса. Ниже приложил результат выполнения скрипта:

Iska 03-04-2018 20:13 2806873

Sargezzz, смотрите два наших предыдущих сообщения и правьте ранее выложенный код, либо используйте вариант с tasklist.exe.

Sargezzz 03-04-2018 20:24 2806874

Iska, спасибо большое всем. Заработало!


Время: 14:17.

Время: 14:17.
© OSzone.net 2001-