Fehlerstufe immer 0 in Batchdatei
Ich versuche, ein automatisiertes Implementierungsskript von einem Windows-Image aus einzurichten. Während des Testens stoße ich auf ein Problem bezüglich des Teils, der versucht zu fangen, wenn bei bestimmten Befehlen etwas schiefgelaufen ist.
Anstatt das Skript zu stoppen, glaubt das Skript weiterhin, dass es erfolgreich ist, und fährt mit dem nächsten Befehl fort, obwohl der vorherige Befehl einen Fehler festgestellt hat.
Ich habe versucht else
, den Abschnitten eine hinzuzufügen, um zu sehen, was schief gelaufen ist, und habe nach der Ausführung des Befehls festgestellt, dass die Fehlerstufe 0 ist. Es sei denn, das Echo stellt selbst eine Fehlerstufe ein. Hier ist der relevante Abschnitt des Codes.
Edit: Ich habe die Hauptursache für diesen Codeabschnitt isoliert. Ich habe auch den Schritt imagex losgelassen, um die Komplexität und die Variablen zu reduzieren.
@echo off setlocal set /p i_understand="Begin failure test? (Y/N) " if "%i_understand%"=="Y" ( rem Deliberately causing diskpart to fail by using a nonexistent file. diskpart /s doesnotexist.txt if %ERRORLEVEL% NEQ 0 ( echo Diskpart failed and caught. endlocal exit /b 1 ) echo Diskpart failed but not caught. Error level is %ERRORLEVEL% ) else ( echo Variable i_understand is %i_understand% echo Aborting. )
Wenn ich den Code auf den folgenden Code reduziere, ist die Fehlerstufe richtig eingestellt:
@echo off setlocal rem Deliberately causing diskpart to fail by using a nonexistent file. diskpart /s doesnotexist.txt if %ERRORLEVEL% NEQ 0 ( echo Diskpart failed and caught. endlocal exit /b 1 )
Die Idee war, Warnungen anzuzeigen und dann eine abschließende Antwort mit einem "Y" zu erhalten. Ja, ich weiß, dass dieses Skript gefährlich ist und ich weiß, was ich mache. bevor Sie mit anderen Eingaben fortfahren, die als Sicherheitsverweigerung interpretiert werden.
Natürlich können während des Prozesses viele Dinge schief gehen. Möglicherweise wird die Verbindung zum Netzlaufwerk unterbrochen, das Ziellaufwerk kann aufgrund eines Fehlers nicht erreichbar sein, oder etwas Unvorhergesehenes führt dazu, dass einer der Befehle fehlschlägt. In diesem Fall stoppt das Skript das, was es tut, und speichert bis zu diesem Punkt ein Protokoll der Konsolenausgabe.
Natürlich stieß ich bei meinen Tests auf eine Reihe von Fehlern aufgrund falsch konfigurierter Variablen, aber das Skript ruckte weiter, als wäre nichts passiert.
0 Antworten auf die Frage
Verwandte Probleme
-
12
Warum wird der Ordner / winsxs so groß und kann er verkleinert werden?
-
2
Erhöhte Berechtigungen für Startanwendungen in Windows?
-
14
PDF Viewer unter Windows
-
7
Welche Windows-Dienste kann ich sicher deaktivieren?
-
8
Firefox PDF-Plugin zum Anzeigen von PDF-Dateien im Browser unter Windows
-
1
Windows verliert das Bildschirmlayout
-
1
Gibt es eine Möglichkeit, Installationen / Updates zu verhindern, die meine Festplatte mit kryptisch...
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
6
Log Viewer unter Windows
-
3
Windows-Hintergrundproblem mit zwei Bildschirmen