Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 5602 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 ..
Ähnliche Inhalte
Windows 10
gelöst Auf Softwareupdates prüfen (4)

Frage von honeybee zum Thema Windows 10 ...

Batch & Shell
Wie arbeitet das cmdlet "Set-HPBiosUEFIBootOrder" ? (3)

Frage von MasterBaiter zum Thema Batch & Shell ...

Microsoft
gelöst RFID zu Tastatur eingabe (4)

Frage von schneerunzel zum Thema Microsoft ...

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

Frage von flyingmichael zum Thema Visual Studio ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(2)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Humor (lol)
gelöst Freidach Beitrag (40)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Firewall
gelöst Firewall Firmeneimsatz (22)

Frage von wiesi200 zum Thema Firewall ...

Multimedia & Zubehör
gelöst 8 GB USB Stick besitzt nur noch 4 MB Kapazität (13)

Frage von Gwahlers zum Thema Multimedia & Zubehör ...