Wie kann ich in einer Batch eine Taste drücken z.B. K und die Batch macht dann mit Abschnitt K weiter?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das geht entweder mit set /p (eher unschöne Variante) oder mit choice:

@echo off & setlocal enableDelayedExpansion

set "choices=KIJ"
CHOICE /M "[K]Beispiel [I]Beispiel2 [J]B3" /C %choices%
set /a choice=%errorlevel%

if %choice% EQU 0 goto end
if %choice% EQU 255 goto end

set "jumpTo=!choices:~0,%choice%!"
set "jumpTo=!jumpTo:~-1!"


goto %jumpTo%

:K
echo K
goto end

:I
echo I
goto end

:J
echo J
goto end


:end
pause >nul
exit

Hab des hier mal so gemacht, dass du keinen Haufen an if-Abfragen hast, sondern einfach nur einen Buchstaben zu der "choices=..." Variable hinzufügen und halt eine Sprungmarke erstellen musst.

~Tim

PS: Das /M bei choice kannst auch weglassen, außer du möchtest zu jedem Buchstaben noch einen Text als Erklärung haben.

0
set /p variable=Drücke eine Taste
if %variable%==k goto abschnittk
:abschnittk
echo Ich bin ein K

Wenn es das ist was du meinst.

1. Dein Beispiel würde immer zu :Abschnittk springen, egal ob die if-Abfrage erfüllt ist.

2. Kann der Nutzer irgendwelche Wörter und Zeichen bei set /p eingeben.

3. Die if-Abfrage kann zu einem Fehler in der Batch führen, wenn man zum Beispiel 

5 equ 5

eingibt --> ist true --> k wird nicht als String sondern als Befehl intepretiert.

mit der Eingabe von

not k

wird die Abfrage umgedreht.

Und wenn man zB nur 

= oder == oder > oder <

eingibt, führt das sogar zum direkten Abbruch der Batch.

0

quck 'n'dirty,,

@ECHO OFF


:start
echo.
echo valied Keys:
echo.
set /p choosen=[A,R,H,M,I]:

If "%choosen%"=="A" goto letterA
If "%choosen%"=="R" goto letterR
If "%choosen%"=="H" goto letterH
If "%choosen%"=="M" goto letterM
If "%choosen%"=="I" goto letterI
goto fail

:letterA
echo ich bin text A
goto start

:letterR
echo ich bin text R
goto start

:letterH
echo ich bin text H
goto start

:letterM
echo ich bin text M
goto start

:letterI
echo ich bin text I
goto start

:fail
echo fehler
PAUSE
goto quit

:quit
Exit

ok eindeutig besseres Beispiel xD

0

Aber wozu die "" bei if "%choosen%" ?

0
@DeezeNuts

ganz ehrlich? Weil ich seit JAHREN bei batch mehr mache, und ich mir nicht sicher war ob, ob ob nicht :) deswegen habe ich sie mal gemacht :P

0
@oxbox

Das ist schon gut so. Sonst kann die Batch durch ungültige Eingaben abgebrochen werden (siehe mein Kommentar zur vorherigen Antwort)

0

Was möchtest Du wissen?