2016-03-23 6 views
0

Das Problem, auf das Skript verwandt ist unten dargestellt:Prozesslauf nach TASKKILL

@echo on 
:MAIN 
start "myname" cmd /c "build\jre\bin\java -jar MainThread.jar" 
timeout /t 2 >null 
TASKLIST /v /fi "IMAGENAME eq cmd.exe">myfile.txt 
TASKKILL /f /fi "IMAGENAME eq cmd.exe" /fi "WINDOWTITLE eq myname" 
TASKLIST /v /fi "IMAGENAME eq cmd.exe">myfile2.txt 
:exit 

Wenn i Taskliste zum ersten Mal ausgeführt wird, wird in myname TASKLIST.After taskkill Ausführung aufgeführt wird, wird myname Prozess nicht in dargestellt ist TASKLIST wurde nach TASKKILL ausgeführt, aber es wird ausgeführt. Obwohl sein Name in TASKLIST nicht vorhanden war, wurde er ausgeführt. TASKKILL konnte den Eintrag zwar entfernen, den Prozess jedoch nicht beenden. Wie sollte ich diesen Prozess beenden?

+1

Deaktivieren Sie Anti-Malware und versuchen Sie es erneut. Wenn es Avast ist, deinstallieren Sie es so bald wie möglich. –

+1

Töte 'java' Prozess anstatt Eltern' cmd' eins. Siehe meine Antwort zur grundlegenden Erläuterung. – JosefZ

+0

@JosefZ Vielen Dank, es hat funktioniert. Aber ich habe einen Zweifel. Wenn mehrere Gläser laufen und ich ein bestimmtes Glas identifizieren möchte, wie identifiziere ich das Glas, wie WINDOWTITLE zeigt N/A? –

Antwort

0

Begonnen java Prozess nimmt elterliche cmd Fenster Name jedoch nicht früher als letzte parental cmd Prozess wird beendet. Beweis gegeben mit Ersatz where nicht java installiert (wie where.exe läuft für eine ganze Weile, um einen Screenshot oder sogar Task-Manager zu inspizieren).

Testskript:

@echo on 
:MAIN 
start "myname" cmd /C where /R c:\ "whistle.*" 
@timeout /t 1 >null 
TASKLIST /V /NH /fi "WINDOWTITLE eq myname" /FO "CSV" 
TASKLIST /v /NH /fi "IMAGENAME eq Where.exe" /FO "CSV" 
TASKKILL /f /fi "IMAGENAME eq cmd.exe" /fi "WINDOWTITLE eq myname" 
TASKLIST /V /NH /fi "WINDOWTITLE eq myname" /FO "CSV" 
:exit 

Ausgang:

==> D:\bat\SO\36185868.bat 

==> start "myname" cmd /C where /R c:\ "whistle.*" 

==> TASKLIST /V /NH /fi "WINDOWTITLE eq myname" /FO "CSV" 
"cmd.exe","3340","Console","1","2 240 K","Running","pcn\usern","0:00:00","myname" 

==> TASKLIST /v /NH /fi "IMAGENAME eq Where.exe" /FO "CSV" 
"where.exe","5188","Console","1","3 184 K","Unknown","pcn\usern","0:00:01","N/A" 

==> TASKKILL /f /fi "IMAGENAME eq cmd.exe" /fi "WINDOWTITLE eq myname" 
SUCCESS: The process with PID 3340 has been terminated. 

==> TASKLIST /V /NH /fi "WINDOWTITLE eq myname" /FO "CSV" 
"where.exe","5188","Console","1","3 184 K","Running","pcn\usern","0:00:01","myname" 

==> 

Screenshot:

tasks

0

Vielen Dank für Ihre Hilfe. Ich habe den Befehl TASKKILL/f/t/fi "IMAGENAME eq cmd.exe"/fi "WINDOWTITLE eq myname" verwendet./t wird verwendet, um alle untergeordneten Prozesse zu schließen, und java.exe wird als 1 seines untergeordneten Prozesses geschlossen.

Verwandte Themen