2013-02-16 12 views
12

Ich schreibe eine Batch-Datei, die ein paar Dateien validiert. Wenn eine der Dateien nicht gültig ist, möchte ich das Stapelscript stoppen und einen Fehlercode> 0 zurückgeben. Der folgende Code scheint die Aufgabe zu erledigen, aber der Aufruf von "EXIT 2" beendet das Eingabeaufforderungsfenster, in dem das Skript ausgeführt wurde.Wie kann ein Fehlercode zurückgegeben werden, ohne das Eingabeaufforderungsfenster zu schließen?

:Validate 
SETLOCAL 
Validator %1 
IF %ERRORLEVEL% GEQ 1 EXIT 2 
ENDLOCAL 

Gibt es eine Idee, wie man einen Fehlercode zurückgibt, ohne die Eingabeaufforderung zu schließen?

+0

Um alles zurück zu geben, muss es fertig sein ... – vonbrand

Antwort

32

Um Hilfe zu Eingabeaufforderung Befehle verwenden, um ihre/zu bekommen? Möglichkeit. Exit /? zeigt:

Verlässt das Programm CMD.EXE (Befehlsinterpreter) oder die aktuelle Partie Skript.

EXIT [/ B] [exitcode]

/B gibt den aktuellen Batch-Skript statt CMD.EXE zu verlassen. Wenn sie von außerhalb eines Stapel-Skripts ausgeführt wird, wird beendet. CMD.EXE

exitCode gibt eine numerische Nummer an. Wenn/B angegeben ist, setzt ERRORLEVEL diese Nummer. Wenn Sie CMD.EXE beenden, wird der Prozesscode mit dieser Nummer festgelegt. So

Sie

IF %ERRORLEVEL% GEQ 1 EXIT /B 2 
1

Sie können den Befehl pause vor dem Aufruf von exit verwenden.

Wenn Sie die Nachricht nicht mögen:

pause > nul 
+0

Ich habe es gerade versucht und jetzt muss ich Enter drücken und dann schließt das Fenster ... – Martin

+1

das ist was Pause tut, ja. –

+0

Ich möchte nicht, dass das Fenster überhaupt schließt. Ich möchte nur zur Eingabeaufforderung zurückkehren. – Martin

-2

das gleiche Problem Got. Wenn Sie einen Stapel schreiben (Windows-Shell-Skript). 'cmd' sollte es für Sie tun. Dies beendet den Stapel nicht und verbleibt an der Eingabeaufforderung. Mein Problem wurde gelöst. für ex: cd "\view\Flex Builder 3\gcc-mvn" set path="c:\view\jdk1.7.0_02\bin";"c:\view\apache-maven-3.0.5\bin";%path% mvn sonar:sonar cmd sollte an der Eingabeaufforderung nach der Ausführung bleiben.

+2

Diese Reihe von Befehlen endet am Ende, weil MVN eine Batch-Datei ist. Sie müssen mvn aufrufen, nicht nur ausführen. Wenn Sie CALL nicht verwenden, wenn Sie andere Batch-Dateien aufrufen, werden Sie nie von einer Batch-Datei zurückkehren, die Sie aufrufen. Die aufgerufene Batch-Datei übernimmt und die ursprüngliche wird nicht mehr ausgeführt. Auch der CMD-Aufruf am Ende Ihrer Datei öffnet tatsächlich einen NEUEN Befehlsprozessor, so dass Sie zwei anstelle von einem ausführen müssen. – David