Пакетная странная проблема с использованием set / p, не принимающим значение - PullRequest
0 голосов
/ 13 октября 2018

Я хотел бы знать, все ли в порядке, так как у меня значение "H1" не работает в этом наборе

set /p LL1=
IF "%LL1%" == "1" (
    goto :LL1
) ELSE (
    IF "%LL1%" == "EN" (
        goto :LL1
    ) ELSE (
    goto :LLERR
        IF "%LL1%" == "H1" (
            goto :LLH
        ) ELSE (
            IF "%LL1%" == " " (
                goto :LLERR
            ) ELSE (
                IF "%LL1%" == "" (
                    goto :LLERR
                ) ELSE (
                goto :LLERR
                )
            )
        )
    )
)

1 / EN работает, H1 не работает и пробел / void естьзаблокирован как задумано, я действительно потерян на этом, есть идеи?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Это «стандартный» способ сделать это:

set /p LL1=

IF "%LL1%" == "1"  goto :LL1
IF "%LL1%" == "EN" goto :LL1
IF "%LL1%" == "H1" goto :LLH
goto :LLERR

Однако я бы сделал это следующим образом:

set /p LL1=

rem Call the given label, hide error message
call :Label-%LL1%  2> NUL
if errorlevel 1 goto :LLERR

echo Subroutine called OK
goto :EOF

:Label-1
:Label-EN
echo This is LL1
exit /B

:Label-H1
echo This is LLH
exit /B

Или, еще лучше, используя choice команда вместо set /p

0 голосов
/ 13 октября 2018
set /p LL1=

IF "%LL1%" == "1" (
    goto :LL1
    IF "%LL1%" == "EN" (
        goto :LL1
        IF "%LL1%" == "H1" (
            goto :LLH
            IF "%LL1%" == " " (
                goto :LLERR
                IF "%LL1%" == "" (
                    goto :LLERR
                ) ELSE (
                goto :LLERR
                )
            )
        )
    )
)

Разве так лучше?

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