2016-06-24 2 views
1

, поэтому Google не помог мне вообще, мне нужно снова спросить здесь. Я использую этот метод, чтобы проверить, работают ли мои серверы в двух пакетных файлах.Пакетный файл, который проверяет другой процесс пакетного файла

tasklist /FI "IMAGENAME eq server_64.exe" 2> nul | find "server_64.exe" > nul 
IF ERRORLEVEL == 1 (
echo Server is not running 
echo. 
) else (
echo Stopping Server ... 
echo. 
taskkill /F /IM server_64.exe > nul 2>&1 
) 

Один для запуска и один для остановки серверов. Хорошо, что это отлично работает, но когда дело доходит до пакетных файлов, он не будет работать для меня ... У меня есть один сервер, который работает на phyton, поэтому запустите его через командный файл. Мой вопрос в том, есть ли способ получить статус процесса пакетного файла и остановить его, как он работает для exe? Надеюсь, я объяснил это достаточно хорошо. Thx заранее! :)

+0

'IF% ERRORLEVEL% == 1 (' или 'IF ERRORLEVEL 1 (' хотя эти 'IF' не дают одинаковых результатов, см. Http://ss64.com/nt/if.html и http: //ss64.com/nt/find.html – JosefZ

+0

@JosefZ, предпочтительнее 'IF% ERRORLEVEL% EQU 1' (оператор' == 'принуждает сравнение строк,' EQU' выполняет численное сравнение, когда оба выражения являются чисто числовыми, и ' IF ERRORLEVEL 1' на самом деле означает 'IF ERRORLEVEL> = 1', но некоторые команды могут использовать и отрицательные значения« ERRORLEVEL ») ... – aschipfl

+0

скрипт работает для exe-файлов, как это должно быть не для пакетных файлов. –

ответ

0

Вы можете попробовать его с помощью пакетного файла, как это:

@echo off 
set "Process=server_64.exe" 
Title Checking for status of this process ===^> "%Process%" 
tasklist /nh /fi "imagename eq %Process%" 2>nul |find /i "%Process%" >nul 
IF '%ERRORLEVEL%' EQU '1' (
    Color 0B 
    echo. 
    echo "%Process%" is not running 
) else (
    Color 0C 
    echo. 
    echo Stopping "%Process%" ... 
    taskkill /F /IM "%Process%" > nul 2>&1 
) 
pause 
+0

вы меня не поняли , возможно, я не объяснил это достаточно хорошо. Мне нужно проверить список задач для пакетного файла, который работает не exe-файл, который работает хорошо. У меня есть пакетный файл, который запускает скрипт phyton, и я хочу проверить CMD, который на самом деле запускает скрипт. Когда я пытаюсь использовать «xyz.b at "где я использую server_64.exe" это не сработает. –

+0

Я даже пытался скомпилировать пакет в exe-файл, чтобы найти его в списке задач, но он по какой-то причине не работает. –

+0

tasklist/FI "WINDOWTITLE eq Администратор: Брокер" 2> NUL | find/I/N "cmd.exe" 2> NUL не работает, если я разочаровываюсь, потому что google не поможет мне вообще xD, и это не имеет значения, если я использую «Administrator:» в качестве префикса или нет, просто дал мне уровень ошибки 1 duh ... –

0

Omg я нашел решение, это было животное ...

tasklist /fi "imagename eq cmd.exe" /v /fo table /nh | find /i "Broker" 2>nul 

но что starmnge является то, что я не могу получить выход быть silnce ... , когда я пытаюсь отключить это дает мне всегда уровень ошибки 1.

tasklist /fi "imagename eq cmd.exe" /v /fo table /nh 2>nul | find /i "Broker" 2>nul 

, так что с этим не так?^

+0

duh im realy извините! его просто> nul вместо 0f 2> nul –