这段代码有什么问题?
IF "%language%" == "de" (
goto languageDE
) ELSE (
IF "%language%" == "en" (
goto languageEN
) ELSE (
echo Not found.
)
我在批处理方面不太好..
答案 0 :(得分:28)
@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
。
答案 1 :(得分:11)
@echo off
set "language=de"
IF "%language%" == "de" (
goto languageDE
) ELSE (
IF "%language%" == "en" (
goto languageEN
) ELSE (
echo Not found.
)
)
:languageEN
:languageDE
echo %language%
这有效,但不确定你的语言变量是如何定义的。它的定义是否有空格。
答案 2 :(得分:7)
batchfiles使用变量执行简单的字符串替换。 所以,一个简单的
goto :language%language%
echo notfound
...
这不需要if。
答案 3 :(得分:0)
建议。不要使用用户添加的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
答案 4 :(得分:0)
@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)
答案 5 :(得分:-1)
@echo off title Test
echo Select a language. (de/en)
set /p language=
IF "%language%" == "de" (
goto :languageDE
) ELSE IF "%language%" == "en" (
goto :languageEN
) ELSE (
echo Not found. )
:languageDE
echo welcome ,you selected the jarmni langauge
goto :eof
:languageEN
echo welcome ,you selected the english langauge
goto :eof