这段代码有什么问题?
IF "%language%" == "de" (
goto languageDE
) ELSE (
IF "%language%" == "en" (
goto languageEN
) ELSE (
echo Not found.
)
我不是很擅长批量..
@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
...
这样做没有任何需要if。
建议。不要使用用户添加的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)