批 - 如果,ElseIf,Else

时间:2014-08-19 13:13:25

标签: batch-file if-statement

这段代码有什么问题?

IF "%language%" == "de" (
    goto languageDE
) ELSE (
    IF "%language%" == "en" (
    goto languageEN
) ELSE (
    echo Not found.
)

我在批处理方面不太好..

6 个答案:

答案 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

重点是批处理只是逐行完成指令,直到达到gotoexit或文件结尾。它没有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