
130834
11.12.2016
Win10 ändert den Errorlevel? ( Batch )
Hey Leute,
Ich habe heute wieder mit Prozessen herumgebastelt, die sich gegenseitig überwachen.
Da plötzlich, habe ich einen Fehler. Der Fehler stellt sich als unbehebbar heraus!
Denn; offenbar funktioniert der errorlevel mit dem find Befehl ganz plötzlich komplett anders, und Programme tun nicht mehr das was sie tun.
Man sieht das ganz schön hier ran:
Dieses Script hat früher überprüft ob Teamviewer läuft, falls ja den Prozess beendet und gesagt: Teamviewer wurde beendet und fals nein Teamviewer ist schon beendet.
Nach viel herumprobieren in meine aktuellen Projekt, habe ich dann auf meine Bibliothek zurückgegriffen um mir ein Beispiel dieser Funktion zu suchen, und habe das Script oben gefunden.
Ja. Das beste kommt aber noch: der Output dieses Script ist aktuell: Teamviewer wurde beendet; und das CMD Fenster gibt die Nachricht aus: Kein Prozess mit dieser ID gefunden.
Es wird noch schlimmer; nicht einmal wenn ich EQU 0 durch EQU 1 ersetzten würde funktioniert das Script. Es funktioniert einfach GAR NICHT mehr.
Wie soll ich denn jetzt bitte herausfinden ob ein Prozess mit einer bestimmten PID läuft oder nicht?
( Es kann sein das dieses Script für euch funktioniert; für mich hat es das Früher schließlich auch. Ich hab die neuste Windows 10 Version, btw )
Bitte helft mir ich weiß nicht mehr weiter Microsoft ist doof, und ihr neuster Versuch CMD zu ersetzten hat mir das Leben nicht einfacher gemacht....
Ich habe heute wieder mit Prozessen herumgebastelt, die sich gegenseitig überwachen.
Da plötzlich, habe ich einen Fehler. Der Fehler stellt sich als unbehebbar heraus!
Denn; offenbar funktioniert der errorlevel mit dem find Befehl ganz plötzlich komplett anders, und Programme tun nicht mehr das was sie tun.
Man sieht das ganz schön hier ran:
@echo off
set Programm=teamviewer
tasklist |find /i "%Programm%.exe" >nul
if %errorlevel% == 0 (
taskkill /F /IM %Programm% & msg "%username%" %Programm% wurde Beendet!
) else (
msg "%username%" %Programm% ist bereits Beendet!
)
exit
Dieses Script hat früher überprüft ob Teamviewer läuft, falls ja den Prozess beendet und gesagt: Teamviewer wurde beendet und fals nein Teamviewer ist schon beendet.
Nach viel herumprobieren in meine aktuellen Projekt, habe ich dann auf meine Bibliothek zurückgegriffen um mir ein Beispiel dieser Funktion zu suchen, und habe das Script oben gefunden.
Ja. Das beste kommt aber noch: der Output dieses Script ist aktuell: Teamviewer wurde beendet; und das CMD Fenster gibt die Nachricht aus: Kein Prozess mit dieser ID gefunden.
Es wird noch schlimmer; nicht einmal wenn ich EQU 0 durch EQU 1 ersetzten würde funktioniert das Script. Es funktioniert einfach GAR NICHT mehr.
Wie soll ich denn jetzt bitte herausfinden ob ein Prozess mit einer bestimmten PID läuft oder nicht?
( Es kann sein das dieses Script für euch funktioniert; für mich hat es das Früher schließlich auch. Ich hab die neuste Windows 10 Version, btw )
Bitte helft mir ich weiß nicht mehr weiter Microsoft ist doof, und ihr neuster Versuch CMD zu ersetzten hat mir das Leben nicht einfacher gemacht....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 323561
Url: https://administrator.de/forum/win10-aendert-den-errorlevel-batch-323561.html
Ausgedruckt am: 28.04.2025 um 11:04 Uhr
12 Kommentare
Neuester Kommentar

Nö, der Fehler ist dein Schnippsel ... 
Gruß
taskkill /F /IM %Programm% & msg "%username%" %Programm% wurde Beendet!
hier vergisst du erstens das EXE am Ende des Prozessnamens und zweitens nutzt du kein doppeltes && damit die Meldung auch nur bei erfolgreichen Killen erscheint.@echo off
set "Programm=teamviewer.exe"
tasklist | find /i "%Programm%" >nul && (
taskkill /F /IM "%Programm%" && msg "%username%" "%Programm% wurde beendet!"
) || (
msg "%username%" "%Programm% ist bereits beendet!"
)

Stichwort DelayedExpansion...
Wenn du den Errorlevel in einem mit Klammern versehenen Ausdruck abfragst (z.B. For-Schleife oder IF-Konstrukt mit Klammern) musst du auch Ausrufezeichen anstatt Prozentzeichen benutzen (!ERRORLEVEL!) um den vom vorherigen Befehl erzeugten Errorlevel abzufragen.
!
Klappt alles wie vorgesehen auch im neuesten Windows 10, da hat sich in der Hinsicht nichts verändert, glaub mir, auch ich habe es überprüft. Du hast da einfach nur einen Denkfehler am heutigen Feiertag
Wenn du den Errorlevel in einem mit Klammern versehenen Ausdruck abfragst (z.B. For-Schleife oder IF-Konstrukt mit Klammern) musst du auch Ausrufezeichen anstatt Prozentzeichen benutzen (!ERRORLEVEL!) um den vom vorherigen Befehl erzeugten Errorlevel abzufragen.
> Zitat von @Pjordorf:
Nee nicht wirklich. Seinenthält schon die Dateiendung.
Dort meinte ich es ja auch nicht sondern nur in meiner oben zitierten Stelle, Dr. Pjordorf Nee nicht wirklich. Sein
tasklist |find /i "%Programm%.exe" >nul
Klappt alles wie vorgesehen auch im neuesten Windows 10, da hat sich in der Hinsicht nichts verändert, glaub mir, auch ich habe es überprüft. Du hast da einfach nur einen Denkfehler am heutigen Feiertag
Und... wo bleibt der errorlevel?
Hallo,
Jedenfalls dein dein jetzt Beispielhaft genanntes Schnippsel tut was es soll und nichts anderes. Du wirst hier wohl Fehlermeldungen hinmalen müssen oder nicht mit Beispielschippsel um dich schmeißen.
Gruß,
Peter
Zitat von @130834:
Und... wo bleibt der errorlevel?
Braucht es nicht. Aber selbstverständlich kannst du dir noch eine ErrorLevel abfrage mit IF einbauen, allerdings für deinen geschilderte Zweck - überflüssig.Und... wo bleibt der errorlevel?
um den Schnipsel direkt.
Aber der Schnippsel enthielt deinen Fehler. Warum reden wir über diesen Schnippsel wenn es dir um ganz was anderes geht?es geht mir darum das es auch bei anderen Dingen nicht funkt...
Das Schnippsel tut was es soll. Fürs Telefonieren ist das nicht gedacht oder gebaut.zb das hier:
Liefert ein leere Zeile wenn du kein : in der Ausgabe von Tasklist hast.Leider scheint das mit dem oben nicht zu funktionieren
Dieses oben hier drin oder dein Ursprungliches oben?Jedenfalls dein dein jetzt Beispielhaft genanntes Schnippsel tut was es soll und nichts anderes. Du wirst hier wohl Fehlermeldungen hinmalen müssen oder nicht mit Beispielschippsel um dich schmeißen.
Gruß,
Peter
Hi,

Gruß,
gez. Dr Pjordorf. Prof in Ausbildung
Zitat von @131381:
Dort meinte ich es ja auch nicht sondern nur in meiner oben zitierten Stelle, Dr. Pjordorf
!
OK, habs gefunden. tatsächlich. Hab natürlich nicht wirklich dort ein Taskkill laufen lassen, daher nicht drauf geachtet. Dabke fürs drauf hinweisen in deiner wie immer unfehlbaren Art Dort meinte ich es ja auch nicht sondern nur in meiner oben zitierten Stelle, Dr. Pjordorf
Gruß,
gez. Dr Pjordorf. Prof in Ausbildung