批 - 如果,ElseIf,Else

Und*_*tex 18 if-statement batch-file

这段代码有什么问题?

IF "%language%" == "de" (
    goto languageDE
) ELSE (
    IF "%language%" == "en" (
    goto languageEN
) ELSE (
    echo Not found.
)
Run Code Online (Sandbox Code Playgroud)

我不是很擅长批量..

Mag*_*goo 32

@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
Run Code Online (Sandbox Code Playgroud)

的一点是,批量简单地通过线通过指令继续,线,直到它到达一个goto,exit或文件结束-.它没有sections控制流量的概念.

因此,在进入de会跳转到:languagede后来干脆继续执行指令,直到文件结束,呈现de然后ennot found.


npo*_*aka 12

@echo off

set "language=de"

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

:languageEN
:languageDE

echo %language%
Run Code Online (Sandbox Code Playgroud)

这可行,但不确定您的语言变量是如何定义的.它的定义中是否有空格.

  • 不要忘记在“echo Not found.”之后它会被丢弃。因此,在其他地方调用“exit”或“goto”。 (2认同)

ths*_*ths 7

batchfiles使用变量执行简单的字符串替换.所以,简单

goto :language%language%
echo notfound
...
Run Code Online (Sandbox Code Playgroud)

这样做没有任何需要if.