Закрытие ": | _ |"отметки, множественные "Перейти" |создание функций (cmd | .bat) - PullRequest
0 голосов
/ 12 июня 2018

Как сделать, чтобы доступные, быстрые ярлыки ("goto | anyth |" | "call | anyth |" | ..) из цикла "for", сценарии, в пределах 1 файла сценария

Мои попытки:

for /F %%a in ("t1") do (
    if "%%a"=="" (
            call :fsc
    ) else (
        echo "n t"
        if "%%a"=="t1" (
            call :fsc
        ) else (
            call :fsc1
        )
    )
    :fsc
    echo t1
    rem how? to end the :fsc (without the addition it continuing to "pause")
    rem  (answer: not possible in bash, this example's way can't be used because "goto" breaks out ?all scopes)
    :fsc
    echo t2
)

pause

и другой

for /F %%a in ("t1") do (
    if "%%a"=="" (
            call :fsc
    ) else (
        echo "n t"
        if "%%a"=="t1" (
            call :fsc
        ) else (
            call :fsc1
        )
    )
)
:fsc
echo t1
goto :eof
:fsc1
echo t2
goto :eof

::why? after the "for" ends, execution doesn't coming here
:: (answer: all after "for" executed( including "goto :eof"))
pause

mintextlimitmintextlimitmintextlimitmintextlimitm

1 Ответ

0 голосов
/ 12 июня 2018

Лучше всего ставить вызываемые вами функции в конец вашего скрипта.Что является своего рода противоположностью того, что большинство людей делают на других языках сценариев.Функции - это функции в других языках сценариев, но они не работают таким образом в пакетных файлах.Поэтому в пакетных файлах лучше всего ставить их в конец вашего скрипта.

@ECHO OFF
for /F %%a in ("t1") do (
    if "%%a"=="" (
            call :fsc
    ) else (
        echo "n t"
        if "%%a"=="t1" (
            call :fsc
        ) else (
            call :fsc1
        )
    )
)
REM Put the main programming code here.
pause

REM END OF SCRIPT. ONLY FUNCTIONS BELOW.
GOTO :EOF
:fsc
echo t1
goto :eof

:fsc1
echo t2
goto :eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...