Ich habe ein Problem mit meiner Batch-Datei. Es mehrere Programme automatisch baut so etwas wie dies tun:Batch-Skript aus einer Funktion heraus beenden
- einige Kompilation Flags gesetzt
- run ‚gmake alle‘
- Aufruf der „überprüfen Fehlerstufe“ Funktion und wenn Errorlevel 1, Ausfahrt
So sieht es wie folgt aus:
set FLAG=1
...
gmake all
call :interactive_check
set OTHERFLAG=1
...
gmake all
call :interactive_check
es 6 oder 7 von diesen (und i t könnte wachsen). Also habe ich eine Funktion gemacht, die errorlevel prüft, anstatt sie bei jedem Schritt zu kopieren/einzufügen. Das Problem ist folgendes: die Fehlerüberprüfung wird durch eine Funktion gemacht:
:interactive_check
if errorlevel 1 (
echo.
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo Error in compilation process... exiting
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo.
cd %root_dir%
exit /B 1
) ELSE (
echo.Continuing to next step
)
goto:eof
Nun, wenn es ausgeführt wird, die exit /B 1
verlässt einfach die Funktion, aber nicht die Batch-Datei.
Wissen Sie, wie Sie die komplette Batch-Datei beenden, ohne bei jedem Schritt mein "if errorlevel 1 .." kopieren/einfügen zu müssen?
Sie können nicht. Ersetzen Sie einfach 'call: interactive_check' durch' if errorlevel 1 goto error'. Es gibt keinen großen Unterschied zwischen Copy-Pasting-Former oder Letzterem. :) – atzz
Habe es, löste das Problem damit und es funktioniert gut, danke! – Gui13