Что не так с этим кодом?
IF "%language%" == "de" (
    goto languageDE
) ELSE (
    IF "%language%" == "en" (
    goto languageEN
) ELSE (
    echo Not found.
)
Я не очень хорош в Batch..
Что не так с этим кодом?
IF "%language%" == "de" (
    goto languageDE
) ELSE (
    IF "%language%" == "en" (
    goto languageEN
) ELSE (
    echo Not found.
)
Я не очень хорош в Batch..
@echo off
title Test
echo Select a language. (de/en)
set /p language=
IF /i "%language%"=="de" goto languageDE
IF /i "%language%"=="en" goto languageEN
echo Not found.
goto commonexit
:languageDE
echo German
goto commonexit
:languageEN
echo English
goto commonexit
:commonexit
pause
  Дело в том, что пакет просто продолжает выполнять инструкции, строка за строкой, пока не достигнет goto, exit или конца файла. У него нет понятия sections для управления потоком.
 Следовательно, ввод de приведет к переходу на :languagede затем просто продолжит выполнение инструкций, пока файл не завершится, показывая de затем en затем not found.
@echo off
set "language=de"
IF "%language%" == "de" (
    goto languageDE
) ELSE (
    IF "%language%" == "en" (
        goto languageEN
    ) ELSE (
    echo Not found.
    )
)
:languageEN
:languageDE
echo %language%
Это работает, но не уверен, как определяется ваша языковая переменная. У нее есть пробелы в определении.
batchfiles выполняет простую замену строк с помощью переменных. поэтому простой
goto :language%language%
echo notfound
...
делает это без необходимости, если.
Рекомендация. Не используйте пользовательские инструкции REM для блокировки шагов пакета. Вместо этого используйте условный GOTO. Таким образом, вы можете предопределить и протестировать этапы и параметры. Пользователи также получают гораздо более простые изменения и большую уверенность.
@Echo on
rem Using flags to control command execution
SET ExecuteSection1=0
SET ExecuteSection2=1
@echo off
IF %ExecuteSection1%==0 GOTO EndSection1
ECHO Section 1 Here
:EndSection1
IF %ExecuteSection2%==0 GOTO EndSection2
ECHO Section 2 Here
:EndSection2
		@echo off
color 0a
set /p language=
if %language% == DE (
    goto LGDE
) else (
    if %language% == EN (
    goto LGEN
    ) else (
    echo N/A
)
:LGDE
(code)
:LGEN
(code)