web-dev-qa-db-de.com

Charge - Wenn, ElseIf, Else

Was ist los mit diesem Code?

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

Ich bin nicht wirklich gut in Batch ..

16
Underbytex
@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

Der Punkt ist, dass der Stapel einfach durch die Anweisungen zeilenweise weitergeht, bis er eine goto, exit oder ein Dateiende erreicht. Es hat keinen Einfluss von sections, um den Fluss zu steuern.

Wenn Sie de eingeben, wird zu :languagede gesprungen. Fahren Sie dann einfach mit der Ausführung der Anweisungen fort, bis die Datei endet, und zeigen Sie de und dann en und dann not found an.

24
Magoo
@echo off

set "language=de"

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

:languageEN
:languageDE

echo %language%

Dies funktioniert, ist aber nicht sicher, wie Ihre Sprachvariable definiert ist. Sie enthält Leerzeichen in ihrer Definition.

11
npocmaka

batchfiles führen eine einfache Zeichenfolgenersetzung mit den Variablen ..__ aus

goto :language%language%
echo notfound
...

tut dies ohne Notwendigkeit für if.

6
ths
@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)

Empfehlung. Verwenden Sie keine vom Benutzer hinzugefügten REM - Anweisungen, um Stapelschritte zu blockieren. Verwenden Sie stattdessen das bedingte GOTO . Auf diese Weise können Sie die Schritte und Optionen vordefinieren und testen. Die Benutzer erhalten auch wesentlich einfachere Änderungen und ein besseres Vertrauen.

@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
0
WaitForPete