Назад | Перейти на главную страницу

партия: как выйти из цикла без метки

это команда для выхода из FOR без использования «метки перехода»?

for %%c in (list) do (
 [some code]
 for %%i in (1 1 100) do (
   [some code]
   if [a condition] exit-this-for
   [some code]
   )
rem go here when exit
 [some code]
 )

я ненавижу ярлыки!

Даже если вы ненавидите ярлыки, отказ от их использования ограничивает ваши возможности здесь. Я не могу придумать простого способа сделать это в одном файле. Если вам не противна идея использования двух командных файлов, вы можете сделать что-то вроде этого. Бег a.cmd воля CALL b.cmd и выполнить ERRORLEVEL проверка на основе любых EXIT /B в 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%
        )
    )
)