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

timlg07  06.11.2017, 21:44

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

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
DeezeNuts  06.11.2017, 16:45

ok eindeutig besseres Beispiel xD

0
DeezeNuts  06.11.2017, 16:54

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

0
oxbox  06.11.2017, 16:55
@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
timlg07  06.11.2017, 21:59
@oxbox

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

0

wenn die batch datei unterbrechen soll, hier:

set/p "r=> " & call set marke=%%r%%

goto %marke%

falls nicht, solltest du ein 2. fenster öffnen, das die Variable als .txt Datei speichern und zwischen jedem befehl der 1. BATch prüfen, ob bzw. was darin steht, es dann als variable speichern und dann zu der marke springen

Woher ich das weiß:eigene Erfahrung

Choice heißt der Befehl. Schau einfach mal auf YouTube nach Choice Batch oder sowas

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.

timlg07  06.11.2017, 21:56

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