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 ..
@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.
@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.
batchfiles führen eine einfache Zeichenfolgenersetzung mit den Variablen ..__ aus
goto :language%language%
echo notfound
...
tut dies ohne Notwendigkeit für if.
@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