Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Falsche Eingabe bei set p - wie prüfen?

Frage Entwicklung Batch & Shell

Mitglied: Kalamari

Kalamari (Level 1) - Jetzt verbinden

28.08.2011, aktualisiert 19:38 Uhr, 5399 Aufrufe, 15 Kommentare

Hallo

Habe da mal eine Frage..
Ich habe folgendes ....
01.
set /p einverstanden= 
02.
if /I "%einverstanden%"=="j" goto start 
03.
if /I "%einverstanden%"=="n" goto nichteinverstanden 
04.
if /I "%einverstanden%"=="*" goto evfehler
Soweit so gut, nur denke ich, dass das nicht 100% richtig ist.
Was nun, wenn jemand rein zufällig die * taste drückt?

Es soll halt so sein, dass nur j oder n akzeptiert wird und jede andere Taste, oder auch nur die Enter Taste gedrückt wird, das Script nicht weiter macht?

Vielen Dank
Mitglied: bastla
28.08.2011 um 19:13 Uhr
Hallo Kalamari!

Etwa so:
01.
:Eingabe 
02.
set "einverstanden=" 
03.
set /p einverstanden= 
04.
if /I "%einverstanden%"=="j" goto start 
05.
if /I "%einverstanden%"=="n" goto nichteinverstanden 
06.
echo\ 
07.
echo Bitte nur j oder n eingeben! 
08.
goto :Eingabe
Was nun, wenn jemand rein zufällig die * taste drückt?
... ist mir allerdings nicht so ganz klar ...

Grüße
bastla

P.S.: Bitte Code-Formatierung verwenden ...
Bitte warten ..
Mitglied: 99045
28.08.2011 um 19:23 Uhr
vor Zeile 4 einfügen:
Bitte warten ..
Mitglied: bastla
28.08.2011 um 19:27 Uhr
@99045
Warum?

Grüße
bastla
Bitte warten ..
Mitglied: 99045
28.08.2011 um 19:33 Uhr
@bastla

weil ich im falschen Film war? Vergiss es.

Aber man könnte die Zeile 03 abändern in
set /p einverstanden=Einverstanden: (J / N) 
Nachtrag: Und dann sollte man als Sprungmarken keine Labels verwenden, die auch z. B. als Batch-Parameter oder Programme existieren können wie z. B. "start". Irgendwann für das nur zu Problemen.
Bitte warten ..
Mitglied: Kalamari
28.08.2011 um 19:39 Uhr
Hallo

Vielen Dank!
Klappt einwandfrei.
Es ist so einfach, aber wenn man davor sitzt sieht man den Wald vor lauter Bäumen nicht.
Jetzt hinterher - total logisch

Danke!
Bitte warten ..
Mitglied: Biber
28.08.2011 um 19:53 Uhr
Moin Kalamari,

ich würde aber dennoch Kaputtnicks Gedanken aufgreifen und zusätzlich nur nach dem Variablenwert einverstanden=J abfragen und prüfen.
01.
set /p einverstanden=Einverstanden: (J / N) ? 
02.
If /i "%einverstanden%"=="J" goto :allesPrima 
03.
goto :dannHaltNicht
Grüße
Biber
Bitte warten ..
Mitglied: OKIDOKI
24.02.2012 um 12:14 Uhr
Hallo,

ich bekomme die Meldung, dass GOTO an dieser Stelle syntaktisch nicht verarbeitbar ist, was mache ich falsch?

OKIDOKI
Bitte warten ..
Mitglied: bastla
24.02.2012 um 12:57 Uhr
Hallo OKIDOKI!
was mache ich falsch?
Zunächst schon einmal, dass Du nicht Deinen Code (entsprechend formatiert) postest ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
24.02.2012 um 14:01 Uhr
peinlich ...

01.
:verz1 
02.
ECHO Verzeichnis wechseln [w] oder Rootverzeichnis [r] ? 
03.
ECHO\ 
04.
SET /P M= w/r, dann ENTER:  
05.
IF %M%==r GOTO :weiter 
06.
IF %M%==w GOTO :ver_loop 
07.
echo\ 
08.
echo Bitte nur r oder w eingeben! 
09.
goto :verz1 
10.
 
11.
:ver_loop 
12.
ECHO Directory so eingeben z.B.: hauptverzeichnis 
13.
set /p var_a=cd  
14.
>>".\config.txt" ECHO  %var_a%  
15.
 
16.
:verz 
17.
ECHO Weiter wechseln [w] oder Zielverzeichnis [z] erreicht ? 
18.
ECHO\ 
19.
SET /P M= Auswahl w/z , dann ENTER:  
20.
IF %M%==z GOTO :weiter 
21.
IF %M%==w GOTO :ver_loop 
22.
echo\ 
23.
echo Bitte nur w oder z eingeben! 
24.
goto :verz 
25.
 
26.
:weiter 
27.
:: hier gehts weiter

Grüße OKIDOKI
PS: Wie hält man die Unwissenheit von uns bloß aus ...
Bitte warten ..
Mitglied: bastla
24.02.2012 um 16:13 Uhr
Hallo OKIDOKI!

Wenn es nicht auf beiden Seiten des "==" Werte gibt, geht das daneben - daher etwa:
if /i "%M%"=="r" goto :weiter
Hier wurde auch gleich noch für eine ev klemmende Shift-Taste vorgesorgt, sodass auch die Eingabe von R akzeptiert wird ...
Es würde sich übrigens auch Zeile 13 noch eine Überprüfung der Eingabe anbieten ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
24.02.2012 um 16:44 Uhr
Super!

Zeile 13: Hier meinst du wahrscheinlich das "cd"? Dies soll am Anfang der Eingabe vorgegeben sein, weil es hier um den Verzeichnisechsel geht...

Dankeschön
OKIDOKI
Bitte warten ..
Mitglied: bastla
24.02.2012 um 16:58 Uhr
Hallo OKIDOKI!
Zeile 13: Hier meinst du wahrscheinlich das "cd"?
Nein; ich würde prüfen, ob überhaupt etwas eingegeben wurde, und wenn ja, ob der entsprechende Ordner existiert ...

Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
24.02.2012 um 17:09 Uhr
Hallo bastla,
ja das ist natürlich richtig, vielleicht so?

01.
if defined var_a (GOTO weiter) else (GOTO error)
Gruß OKIDOKI
Bitte warten ..
Mitglied: bastla
24.02.2012 um 17:18 Uhr
Hallo OKIDOKI!

Ja, und zusätzlich ein
if not exist %var_a% (echo Den Ordner "%var_a%" gibt's nicht - bitte neu eingeben! & goto :ver_loop
Grüße
bastla
Bitte warten ..
Mitglied: OKIDOKI
24.02.2012 um 19:56 Uhr
Hallo bastla,

jetzt dachte ich schon ich habs laaangsam, da kommst du und setzt noch einen drau!

Vielen Dank euch,
OKIDOKI
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

E-Mail
gelöst Falsche SMTP Server IP Adresse (6)

Frage von laster zum Thema E-Mail ...

Windows Server
gelöst Seit Zeitverschiebung falsche Zeit in Domäne (4)

Frage von honeybee zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...