Mesmo que você odeie rótulos, recusar-se a usá-los limita suas opções aqui. Não consigo pensar em uma maneira fácil de fazer isso em um único arquivo. Se você não odeia a idéia de usar dois arquivos em lote, você pode fazer algo assim. A execução de a.cmd
irá CALL b.cmd
e realizará ERRORLEVEL
check com base em qualquer EXIT /B
em b.cmd
.
a.cmd:
REM a.cmd
@ECHO OFF
SET CHECKVAR=10
CALL b.cmd
IF ERRORLEVEL %CHECKVAR% (
REM go here when exit from b.cmd met condition
ECHO "B was %CHECKVAR%"
) ELSE (
REM go here when exit from b.cmd did not meet condition
ECHO "B was not %CHECKVAR%"
)
b.cmd
REM b.cmd
@ECHO OFF
FOR /L %%A IN (0,1,3) DO (
ECHO "A: %%A"
FOR /L %%B IN (0,1,100) DO (
ECHO "B: %%B"
REM Do what ever conditional check you like here.
REM Just need to return some ERRORLEVEL to a.cmd.
IF %%B==%CHECKVAR% (
EXIT /B %CHECKVAR%
)
)
)