Wie lässt sich in Batch eine Benutzereingabe direkt bestätigen ohne Enter drücken zu müssen?

1 Antwort

Das Zauberwort heist choice ...

@echo off
chcp 65001 >nul & rem Umlaute darstellen


:menuLoop
echo Menü
echo [1] mach das           [2] mach jenes
echo [3] mach was anderes   [H] Hurahhh
echo [X] Exit
choice /c 123hx /n /m "du hast die  Wahl >"
if %errorlevel% equ 1 call :das
if %errorlevel% equ 2 echo jenes
if %errorlevel% equ 3 echo anderes
if %errorlevel% equ 4 (
    for /l %%a in (1,1,3) do echo Hura!
)
  rem  wenn nicht  x gedrückt wurde  wollen  wir  wohl  weitermachen
if %errorlevel% neq 5 (
    timeout 3 >nul
    cls
    goto :menuLoop
)

echo und Tschüß...
timeout 2 >nul
  rem batch beenden
exit /b

::::: subroutines ::::

:das
echo ich bin die Option das...
exit /b

alternativ schau Dir auch mal die Alternative ohne Choice an: https://www.gutefrage.net/frage/if-errorlevel--225-goto--funktioniert-nicht#answer-357920399

und Sprungmacros: https://www.gutefrage.net/frage/was-ist-an-dieser-if-funktion-falsch-batch#answer-353262384

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

dieses Vorgehen könnte bei größeren Menüs von vorteil sein:

@echo off
chcp 65001 >nul & rem Umlaute darstellen

:menuLoop

echo Menü
echo [1] mach das           [2] mach jenes
echo [3] mach was anderes   [H] Hurahhh
echo [X] Exit
choice /c 123hx /n /m "du hast die  Wahl >"
  rem abfrage  vieler errorlevel werte automatisieren:
for /l %%a in (1,1,4) do (if %errorlevel% equ %%a call :sub_%%a)

  rem bei allem das nicht  errorlevel 5 entspricht... 
if %errorlevel% neq 5 (
    timeout 3 >nul
    cls
    goto :menuLoop
)

echo und Tschüß...
timeout 2 >nul
  rem batch beenden
exit /b

::::: Subroutines ::::

:sub_1
echo Ich  mache das...
exit /b

:sub_2
echo Ich  mache jenes..
exit /b

:sub_3
echo Ich  mach anderes..
exit /b

:sub_4
 for /l %%a in (1,1,3) do echo Hura!
exit /b



0