Talán ez a jó cikk magyarázatnak. Átalakítottam végül a programom.
https://stackoverflow.com/questions/1164049/batch-files-error-handling
IF [%1]==[] GOTO BLANK
IF [%1]==[/?] GOTO BLANK
IF /I "%1"=="api" GOTO API
IF /I "%1"=="train" GOTO TRAIN
:BLANK
ECHO "Usage: cfpushing [ api | train ]"
EXIT /B
:API
CALL :BGCHANGE greenapi to blueapi copyfolder
IF /I "%ERRORLEVEL%" EQU "2" (
CALL :BGCHANGE blueapi to greenapi copyfolder
IF /I "%ERRORLEVEL%" EQU "2" (
XCOPY /R /E /Y origin copyfolder\origin\
cf push -f blueapi.yml
RMDIR /S /Q copyfolder\origin\
)
)
GOTO FINISH
:BGCHANGE
echo %1 to %3 with %~4
cf app %~1 | grep running
IF /I "%ERRORLEVEL%" EQU "0" (
XCOPY /R /E /Y origin %~4\origin\
cf push -f %3.yml || (
RMDIR /S /Q %~4\origin
ECHO Error in pushing
EXIT /B 1
)
RMDIR /S /Q %~4\origin
cf stop %~1
EXIT /B 0
)
EXIT /B 2
:FINISH
ECHO "PUSHED"