Wie BATCH ERRORLEVEL ignorieren
Hallo,
in einem Batch-Skript habe ich nach folgender Anleitung Echo ohne Zeilenumbruch und ähnliche Spielereien folgendes Codesegment benutzt:
Das Netzlaufwerk wird ordnungsgemäß eingehangen, also testvar ist auf 0 gesetzt.
Ausgabe:
Leider liefert der Befehl
als errorlevel 1 zurück, welches dann im ganzen Script auf 1 gesetzt bleibt, ungeachtet weiterer foglender erfolgreicher Befehle
Wie kann ich umgehen, dass dieser Befehl das Errorlevel 1 zurückgibt?
Gruß Andreas
in einem Batch-Skript habe ich nach folgender Anleitung Echo ohne Zeilenumbruch und ähnliche Spielereien folgendes Codesegment benutzt:
set /p =Mounting network drive...<NUL
if %testVar%==0 (
echo done
) else (
echo failed
)
Das Netzlaufwerk wird ordnungsgemäß eingehangen, also testvar ist auf 0 gesetzt.
Ausgabe:
Mounting network drive...done
Leider liefert der Befehl
set /p =Mounting network drive...<NUL
Wie kann ich umgehen, dass dieser Befehl das Errorlevel 1 zurückgibt?
Gruß Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128512
Url: https://administrator.de/contentid/128512
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo gismo82!
Soferne Du tatsächlich die Variable %testVar% später noch benötigen solltest, dürfte aber trotzdem
genügen ...
... ansonsten aber vielleicht auch schon
Grüße
bastla
Soferne Du tatsächlich die Variable %testVar% später noch benötigen solltest, dürfte aber trotzdem
@echo off & setlocal
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL
set testVar=%errorlevel%
if %testVar%==0 (
echo Mounting network drive...done
) else (
echo Mounting network drive...failed
)
... ansonsten aber vielleicht auch schon
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL && (echo Mounting network drive...done) || (echo Mounting network drive...failed)
bastla
Zitat von @gismo82:
Wäre halt schöner gewesen, wenn die Ausgabe zur Laufzeit
ausgegeben würde...
Mich würde auch einmal interresieren, ob überhaupt
möglich ist, das ERRORLEVEL zu ignorieren
Wäre halt schöner gewesen, wenn die Ausgabe zur Laufzeit
ausgegeben würde...
Mich würde auch einmal interresieren, ob überhaupt
möglich ist, das ERRORLEVEL zu ignorieren
Die Ausgabe wird doch zur Laufzeit ausgegeben. Was meinst du genau?
Und der Errorlevel hat prinzipiell keine Auswirkung auf nachfolgende Befehle; es sei denn, du fragst ihn aktiv ab.
Gruß, Farbauti.
Zitat von @gismo82:
[EDIT:] Zur Laufzeit meine ich:
Bevor mein Befehl (Microsoft Logparser in meinem Fall) ausgeführt wird...
[EDIT:] Zur Laufzeit meine ich:
Bevor mein Befehl (Microsoft Logparser in meinem Fall) ausgeführt wird...
Wenn dir das so wichtig ist, dann halt so:
set /p =Mounting network drive...<NUL
net use * \\seetxxnas01.txx.seeburger.de\dataWarehouseImportFolder\GTSProcessList >NUL && (echo done) || (echo failed)
@Farbauti
<Erbsenzählermode>
wobei deine Variante in einem Fall zu "jahrelang gar nichts" führt...
Wenn für das net use eine Eingabe erwartet wird (Benutzername/Passwort), dann wird die "Eingabeaufforderung" unterdrückt, niemand sieht etwas und weder "echo DONE" noch && "echo In die Grütze" wird jemals erreicht.
</Erbsenzählermode>
Grüße
Biber
<Erbsenzählermode>
wobei deine Variante in einem Fall zu "jahrelang gar nichts" führt...
Wenn für das net use eine Eingabe erwartet wird (Benutzername/Passwort), dann wird die "Eingabeaufforderung" unterdrückt, niemand sieht etwas und weder "echo DONE" noch && "echo In die Grütze" wird jemals erreicht.
</Erbsenzählermode>
Grüße
Biber
Moin gismo82,
Eigentlich jeder interne/externe Befehl setzt den Errorlevel auf 0 = Alles prima, wenn er erfolgreich und planmäßig zu einem ende kommt.
Allerdings ist der SET-Befehl eine Ausnahme dieser Regel.
Wenn du WTF-auch-immer das Errorlevel innerhalb des Batchschnipsels auf 0 setzen willst/musst/möchtest:
Wenn du ein ERRORLEVEL 0 nach außen transportieren willst (Rückgabewert des batches an ein aufrufendes Programm):
Verwende "EXIT /B xx" mit xx als deinem gewünschten Rückgabewert.
Siehe Hilfe "Exit /?" am CMD-Prompt.
Grüße
Biber
Gibt es keine Möglichkiet, das Errorlevel zu ignorieren, bzw. auf 0 zu setzen?
Doch, natürlich.Eigentlich jeder interne/externe Befehl setzt den Errorlevel auf 0 = Alles prima, wenn er erfolgreich und planmäßig zu einem ende kommt.
Allerdings ist der SET-Befehl eine Ausnahme dieser Regel.
Wenn du WTF-auch-immer das Errorlevel innerhalb des Batchschnipsels auf 0 setzen willst/musst/möchtest:
REM ein CD zeigt das aktuelle Verzeichnis an UND setzt das Errotlevel auf 0. Da kann nix schiefgehen. Eigentlich.
cd >nul
echo Errorlevel ist: %Errorlevel% nach einem Befehl "CD ohne Parameter"
Wenn du ein ERRORLEVEL 0 nach außen transportieren willst (Rückgabewert des batches an ein aufrufendes Programm):
Verwende "EXIT /B xx" mit xx als deinem gewünschten Rückgabewert.
Siehe Hilfe "Exit /?" am CMD-Prompt.
Grüße
Biber
@Farbauti
Grüße
Biber
...und es nicht meine Variante ist
Es sind doch immer die Boten, die geköpft werden.... *ggGrüße
Biber