maxmex
Goto Top

Sprungziel als Variable

Hallo Leute im Batchforum,

ich habe mich seit einiger Zeit mal wieder mit Batch beschäftigt und bin bei einer Usereingabe auf folgendes Problem gestoßen.
Ich habe Usereingaben 1, 2, 3,.....7, 8 und 9 die dann auch entsprechend weitergeleitet werden.

set /p eingabe=": "
goto %eingabe%
:1
:9

Wenn ich jetzt aber einen User habe der etwas anderes eingibt. Wie kann ich denn das abfangen?

set /p eingabe=": "
goto %eingabe%
:1
:9
:%eingabe%

so hab ich es probiert. Es geht aber überhaupt nicht und ich stehe irgendwie da und weiß nicht weiter.

Wäre nett wenn mir jemand weiterhelfen könnte

Danke
maxmex

Content-Key: 112049

Url: https://administrator.de/contentid/112049

Printed on: April 24, 2024 at 22:04 o'clock

Mitglied: 60730
60730 Mar 21, 2009 at 19:10:00 (UTC)
Goto Top
Servus,
ein Weg wäre - den "hier dürfte nie einer sein" zu wählen:

:start
set /p eingabe=": "  
goto %eingabe%
echo  Falsche Eingabe && goto start
:1
ein anderer wäre - "stimmts"?
Im Fall einer Zahl zwischen 1 und 9 eher leicht face-wink

:start
set /p eingabe=": "  
for /l %%i in (1,1,9) do if  "%%i" =="%eingabe%" goto %eingabe%  
echo  Falsche Eingabe && goto start
:1

Gruß
Mitglied: 77522
77522 Apr 10, 2009 at 22:09:27 (UTC)
Goto Top
hi
ich bin mir nicht sicher aber du könntest es vielleicht so machen:

@echo off
echo eingabe:
set /p "eingabe="
if "%eingabe%" =="1" goto 1
if "%eingabe%" =="2" goto 2
if "%eingabe%" =="3" goto 3
if "%eingabe%" =="4" goto 4
if "%eingabe%" =="5" goto 5
if "%eingabe%" =="6" goto 6
if "%eingabe%" =="7" goto 7
if "%eingabe%" =="8" goto 8
if "%eingabe%" =="9" goto 9
if not "%eingabe%" =="1,2,3,4,5,6,7,8,9" goto 10


oder
for /l %%t in (1 1 9) do if "%eingabe%" =="%%t" goto %eingabe%
for /l %%t in (1 1 9) do if not "%eingabe%" =="%%t" goto (was auch immer)
Mitglied: 60730
60730 Apr 11, 2009 at 12:44:08 (UTC)
Goto Top
Servus,

entweder ist das Problem schon gelöst - oder der Verfasser hat sich aus dem Staub gemacht face-wink

Ich verstehe tatsächlich deine Lösung nicht - bzw. den Unterschied zur Vorherigen...

"Probier mal folgendes aus:

if not "%windir%"=="%windir%,%username%" echo wie auch
if not "%username%"=="%windir%,%username%" echo so auch nicht

Um das "so" zu realisieren, müste das in einer Schleife laufen.
Apropos Schleife:

FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]

Der Satz ist eine Folge von Zahlen von Start bis Ende und der
angegebenen Schrittweite. So erzeugt (1,1,5) die Folge 1 2 3 4 5 und
(5,-1,1) erzeugt die Folge (5 4 3 2 1).

Die Kommas, die du oben (ohne Schleife) benutzt - müssen bei deiner anderen Alternative schon drin sein face-wink
for /l %%t in (1 1 9) do if "%eingabe%" =="%%t" goto %eingabe%
(Wären Sie es - würde die Zeile auch funktionieren und hätte bis auf eine andere Variable - %%T statt %%i - den gleichen Inhalt, wie diejenige welche da schon seit ~3 Wochen steht)


Gruß