Was ist der einfachste Weg, um ERRORLEVEL auf Null zurückzusetzen?
Habe ich eine post-build-event läuft, dass einige Befehle für ein c# - Projekt. Der Letzte Befehl würde manchmal dazu führen, den ERRORLEVEL-Wert nicht gleich null, und dann das build schiefläft.
Möchte ich anfügen einer extra Zeile steht der Befehl, immer den ERRORLEVEL-Wert auf null. Was ist der bequemste Weg, das zu tun?
InformationsquelleAutor der Frage user95319 | 2009-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie
exit /b 0
Sie kann sich wieder einerrorlevel 0
aus einem Kind batch-Skript auch ohne verlassen der Eltern.InformationsquelleAutor der Antwort akf
Scheint, den trick zu tun:
Nicht alles funktioniert, und es ist nicht klar, warum. Zum Beispiel, die folgenden nicht:
InformationsquelleAutor der Antwort Jason Kresowaty
In eine pre - oder post-build-Ereignis, wenn der return-code einer ausführbaren Datei ist, die größer als null ist, und der Aufruf der ausführbaren Datei wird nicht die Letzte Zeile des pre - oder post-build-event, eine schnelle Möglichkeit zu muten und vermeiden, das auslösen einer Prüfung für einen nicht-null -
errorlevel
ist, befolgen Sie die fehlerhafte Zeile mit einer Zeile, die explizit gibt null zurück:Dies ist im wesentlichen eine generische Kombination der zuvor genannten Lösungen, wird die Arbeit mit mehr als nur die Letzte Zeile eines pre - oder post-build-Ereignis.
InformationsquelleAutor der Antwort Jeffrey
Fand ich, dass "exit 0" sieht aus wie ein guter Weg, um mit diesem problem umzugehen.
Beispiel:
wenn die UnderDevService-Dienst nicht gestartet ist.
InformationsquelleAutor der Antwort user95319
Benutze ich
VERIFY
oderVERIFY > nul
InformationsquelleAutor der Antwort ixe013
Ich persönlich benutze dieses:
cd .
Funktioniert auch in der unix-shell.
Aber, dies könnte man ein bisschen schneller:
type nul>nul
Weil
Process Monitor
zeigtQueryDirectory
fordertcd .
PS:
cd .
hat ein weiterer netter Nebeneffekt ist in der unix-shell. Es tut Wiederherstellung neu erstellt Arbeitsverzeichnis, in die Klemme, wenn es geöffnet wurde, bevor die löschen.InformationsquelleAutor der Antwort Andry
Ist dies ein snippet wie "Post-build Event", etc. dann wirst du in Ordnung sein anfügen:
am Ende des letzten Befehls.
Alternativ
ist sehr sauber und nicht-idiomatische -- ein Leser, der weiß, Windows-shell wird wissen, was Los ist, und was war Ihre Absicht.
Jedoch, wenn Sie in einem batch-Skript, das Sie verwenden möchten, können subrotines, die eine leichte äquivalent zum "Kind batch-Skript" von akf ' s Antwort.
Haben eine Unterroutine:
dann nur
wo Sie es brauchen.
Hier ist ein vollständiges Beispiel:
Welche Ausgänge:
Wie Sie sehen - nur Aufruf und Rückkehr über goto:eof ist nicht genug.
InformationsquelleAutor der Antwort Tomasz Gandor
Hinzufügen
>nul
nach jedem Befehl, der wahrscheinlich zum scheitern verurteilt, denn dies scheint zu verhindern, dass das bauen fehlschlägt.Können Sie noch überprüfen Sie das Ergebnis durch die Prüfung
%errorlevel%
.Beispiel:
InformationsquelleAutor der Antwort Chiefy
Ich bin mit diesem:
ping localhost -n 1 " >null
InformationsquelleAutor der Antwort Piotr Domanski
Ich immer nur benutzt,;
Ich nutze es für Esel Jahren.
InformationsquelleAutor der Antwort cirrus