2016-06-24 11 views
1

sucht, so dass Google mir überhaupt nicht geholfen habe, muss ich hier nochmal fragen. Ich verwende diese Art von Methode, um zu überprüfen, ob meine Server in 2 Batch-Dateien ausgeführt werden.Batch-Datei, die nach einem anderen Batch-Datei-Prozess

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 
) 

Eins zum Starten und eins zum Stoppen der Server. Nun, das funktioniert gut, aber wenn es um Batch-Dateien geht, wird es nicht für mich arbeiten ... Ich habe einen Server, der auf Phyton läuft, also starten Sie es über Batch-Datei. Meine Frage ist, gibt es eine Möglichkeit, irgendwie den Batch-Datei Prozessstatus zu bekommen und es zu stoppen, wie es für exe funktioniert? Ich hoffe, ich habe es gut genug erklärt. Danke im Voraus! :)

+0

'IF% ERRORLEVEL% == 1 (' oder 'IF ERRORLEVEL 1 (' obwohl diese 'IF' nicht die gleichen Ergebnisse liefert, siehe http://ss64.com/nt/if.html und http: //ss64.com/nt/find.html – JosefZ

+0

@JosefZ, vorzugsweise 'IF% ERRORLEVEL% EQU 1' (der '==' Operator erzwingt einen Stringvergleich, 'EQU' führt einen numerischen Vergleich durch, wenn beide Ausdrücke rein numerisch sind; und' IF ERRORLEVEL 1 bedeutet eigentlich "IF ERRORLEVEL> = 1", aber einige Befehle können auch negative "ERRORLEVEL" -Werte verwenden ... – aschipfl

+0

Das Skript funktioniert für EXE-Dateien wie es nur für Batch-Dateien nicht sein sollte. –

Antwort

0

Sie können es versuchen, mit einer Batch-Datei wie folgt aus:

@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

Sie haben mich falsch verstanden , vielleicht habe ich es nicht gut genug erklärt. ich muss die taskliste für eine batch-datei überprüfen, die keine exe-datei läuft, die gut funktioniert. ich habe eine batch-datei, die ein phyton-skript startet und nach dem cmd suchen soll Führt das Skript aus, wenn ich versuche, "xyz.b Bei "wo ich benutze" server_64.exe "wird es nicht funktionieren. –

+0

Ich habe sogar versucht, den Stapel zu einer EXE-Datei zu kompilieren, um es in der Taskliste zu finden, aber es wird aus irgendeinem Grund nicht funktionieren. –

+0

Aufgabenliste/FI "WINDOWTITLE eq Administrator: Broker" 2> NUL | find/I/N "cmd.exe" 2> NUL wird nicht funktionieren frustriert, weil Google mir bei xD nicht helfen wird und es keinen Unterschied macht, wenn ich "Administrator:" als Präfix oder nicht beides benutze, gab mir Fehlerlevel 1 Duh ... –

0

Omg ich die Lösung gefunden, dies war ein Tier ...

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

aber was ist starmnge ist, dass ich kann die Ausgabe erhalten werden silnce ... wenn ich versuche, es stumm zu schalten es gibt mir immer Fehlerstufe 1.

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

, was ist damit falsch?^

+0

Duh es tut mir wirklich leid! es ist nur> nul statt 0f 2> nul –