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

Batchscript mit Benutzereingabe - Variable überprüfen misslingt

Frage Entwicklung Batch & Shell

Mitglied: LittleFlame

LittleFlame (Level 1) - Jetzt verbinden

10.08.2011, aktualisiert 18.10.2012, 6247 Aufrufe, 15 Kommentare

Hallöchen liebe Administratorengemeinde.
Ich versuche gerade, mithilfe des Batch Workshops (Part II) von Biber ein Script zu bauen.
Leider scheitere ich und verstehe nicht warum.

Das Script soll je nach Benutzereingabe bestimmte IP-Adressen anpingen und die Erreichbarkeiten in ein Logfile schreiben.
Soweit ja verständlich.

Ich habe nun folgendes versucht, um die Benutzereingabe zu überprüfen.


01.
Set /P NETZ="Welches Netzwerk ueberpruefen? (NETZ1 - NETZ6)" 
02.
If /i %NETZ%=="NETZ1" set NETZ=NETZ1  
03.
If /i %NETZ%=="NETZ2" set NETZ=NETZ2 
04.
If /i %NETZ%=="NETZ3" set NETZ=NETZ3  
05.
If /i %NETZ%=="NETZ4" set NETZ=NETZ4  
06.
If /i %NETZ%=="NETZ5" set NETZ=NETZ5  
07.
If /i %NETZ%=="NETZ6" set NETZ=NETZ6  
08.
for %i in (NETZ1 NETZ2 NETZ3 NETZ4 NETZ5 NETZ6) do if (%NETZ%)==(%i) goto %NETZ%
Danach folgen natürlich die Abschnitte für die verschiedenen Netze.

In der letzten Zeile habe ich anscheinend irgendeinen Fehler, der zu folgender Ausgabe führt:

"NETZi)" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Was genau ist mein Fehler?

Und eine zweite unwichtigere Frage: Lassen sich die Zeilen 2-7 ebenfalls noch sinnvoll in eine Schleife packen?


Vielen Dank im voraus,
LF
Mitglied: Skyemugen
10.08.2011 um 10:32 Uhr
Aloha,

... vergleiche niemals Zollzeichen mit Luft.

%NETZ%=="NETZ1" Kann niemals passen.

Hoffe, das genügt dir als Gedankenblitz.

greetz André

edit: Ah, da war ja noch eine zweite Frage *gg* - gut, beantworten wir diese mit Ja und ziehen uns erst einmal frech grinsend zurück

P.S.: Was machst du, wenn eine falsche Eingabe erfolgt?

tja, das mit dem %i statt batchlike gedoppelt, überliest man auch mal
Bitte warten ..
Mitglied: LittleFlame
10.08.2011 um 10:41 Uhr
Hmmm... vielleicht verstehe ich nicht, was genau du meinst, aber sowohl
01.
If /i %NETZ%=="NETZ1" set NETZ=NETZ1  
als auch

01.
If /i %NETZ%==NETZ1 set NETZ=NETZ1  
tun das, was ich will.


Edit: Mist. Ich sollte meine Frage spezifizieren. Man frägst auch nicht "wissen Sie, wieviel Uhr es ist?", sondern "Entschuldigen Sie, wieviel Uhr ist es?" :-P
Kannst du mich bzgl dieser Schleife in die Richtige Richtung lotsen?
Ich weiss, dass ich dann mit ganz vielen % arbeiten muss, und da komm ich dann durcheinander

PS: Falls falsche Eingabe, dann ein echo mit "Falsche Eingabe und :eof"
Is ja nur n S(ch)nip-sel
Bitte warten ..
Mitglied: bastla
10.08.2011 um 10:43 Uhr
... und noch als Anmerkung zur letzten Zeile: Wenn das Ganze ein Batch sein (werden ) soll, wäre "%%i" anstelle von "%i" angebracht ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.08.2011 um 10:44 Uhr
Hallo LittleFlame!

Wenn beide genannten Zeilen funktionieren, dann aber nur, weil jeweils unterschiedliche Eingaben erfolgen (im ersten Fall mit Anführungs-/"Zoll"-Zeichen, im zweiten Fall ohne) ...

Grüße
bastla
Bitte warten ..
Mitglied: LittleFlame
10.08.2011 um 10:48 Uhr
Irks... ok... bin schon still. Hab zumindest meinen Fehler bzgl. der "ZOLL"-Zeichen verstanden und verbessert.

Aber die Geschichte mit %%i verursacht

""NETZNETZ" ist syntaktisch an dieser Stelle nicht verarbeitbar."

Bitte warten ..
Mitglied: bastla
10.08.2011 um 10:56 Uhr
Hallo LittleFlame!

Ich würde auch nicht unbedingt zu Klammern als "Begrenzungszeichen" raten - bleibe einfach bei den "Zollzeichen" ...
Hinsichtlich der gefragten Schleife:
Wenn es nur darum ginge, jeweils ein
goto :gewähltesNetz
auszuführen, sollte sich das vielleicht so machen lassen:
01.
if defined NETZ findstr /i /x ":%NETZ%" %0 >nul && goto :%NETZ% 
02.
echo Falsche Eingabe 
03.
goto :eof
Die Idee dahinter: Durchsuche den aktuellen Batch (%0) nach einer Zeile ":gewähltesNetz" und, wenn gefunden, springe dort hin ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
10.08.2011 um 11:00 Uhr
Aloha bastla,

(gut du bist noch am rumeditieren deines Codes, wie ich mehrfach bemerkt habe )

Warum goto :eof?
Warum nicht
:Eingabe
if ...
echo Falsche Eingabe - zum Abbrechen STRG+C drücken
goto :Eingabe

Wer falsch tippt, darf noch einmal ^_^

greetz André

edit: @bastla, seit wann machen wir punktgenau das, was der TE möchte Dachte, wir weisen auf mögliche Optimierungen lieber hin ...
Bitte warten ..
Mitglied: bastla
10.08.2011 um 11:07 Uhr
@Skyemugen
Warum goto :eof?
Wunsch des TE :
Falls falsche Eingabe, dann ein echo mit "Falsche Eingabe und :eof"

Grüße
bastla

[Edit]
Dachte, wir weisen auf mögliche Optimierungen lieber hin ...
Machst Du doch ohnehin ...

...wenngleich eine Optimierung für mich hieße, dass die Benutzer nur noch eine Zahl von 1 bis 6 (anstelle von "NETZ" + Zahl) eingeben müssten ...
[/Edit]
Bitte warten ..
Mitglied: Skyemugen
10.08.2011 um 11:09 Uhr
Aloha,

for %%i in (NETZ1 NETZ2 NETZ3 NETZ4 NETZ5 NETZ6) do if (%NETZ%)==(%%i) goto %NETZ% funktioniert einwandfrei auch wenn die Klammern ... nunja nicht das Wahre sind.

Noch als Hinweis: Setze Variablen komplett mit Inhalt in Zollzeichen, um die Leerzeichen am Ende-Problematik hier zu vermeiden, die unangenehme Nebenwirkungen hat außer bei NETZ2 existiert überall ein Leerzeichen dahinter, unschön, kann nicht funktionieren ^_^
set "Var=Inhalt"

greetz André
Bitte warten ..
Mitglied: LittleFlame
10.08.2011, aktualisiert 18.10.2012
So, vielen Dank an alle. Ich hab meine Fehler gefunden und die Optimierungsvorschläge überdacht und eingearbeitet.

Jetzt möcht ich aber kurz noch eine Frage stellen:
Im Workshop Batch for Runaways - Part II gibt es am Anfang einen Codeschnipsel, an dem ich mich orientiert hab.
(Der ist zwar nicht wirklich ernst gemeint, aber soll einen Batch-Code darstellen)
Die angesprochenen Dinge sind in diesem Script also auch falsch oder?


Grüße und vielen Dank,
LF
Bitte warten ..
Mitglied: bastla
10.08.2011 um 12:07 Uhr
Hallo LittleFlame!
Die angesprochenen Dinge sind in diesem Script also auch falsch oder?
Zumindest sollte keine Zeile (und schon gar nicht die Zeilen 4-6) eine ungerade Anzahl von " enthalten (was aber interessanter Weise fast 6 Jahre lang niemanden gestört hat bzw eher niemandem aufgefallen ist - ich habe offensichtlich auch gleich bei ":NewbieStuff" zu lesen begonnen) ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
10.08.2011 um 12:13 Uhr
Aloha,

sogar noch fataler *gg* dort steht es anfangs mit nur einem Zollzeichen also Biber, Biber

muss gestehen, habe mir hier bisher noch keine Tutorials angeguckt, wer merkt sich schon den Hauf' an Informationen ... learning by doing und zur Not asking finde ich viel effektiver

greetz André

edit: too late unser Elektrotechniker kam mit einem Anruf beim Posten dazwischen ;D
Bitte warten ..
Mitglied: Biber
10.08.2011, aktualisiert 18.10.2012
Moin LittleFlame,

Zitat von LittleFlame:
So, vielen Dank an alle. Ich hab meine Fehler gefunden und die Optimierungsvorschläge überdacht und eingearbeitet.

Jetzt möcht ich aber kurz noch eine Frage stellen:
Im Workshop Batch for Runaways - Part II gibt es am Anfang einen
Codeschnipsel, an dem ich mich orientiert hab.
(Der ist zwar nicht wirklich ernst gemeint, aber soll einen Batch-Code darstellen)
Die angesprochenen Dinge sind in diesem Script also auch falsch oder?
Ja nee, das is' mir ja so was von peinlich.....

Das war wirklich ein durch Copy&Paste verdreifachter Tippfeh Pfusch.
Ich gelobe mich zu bessern.

Jedenfalls habe ich im Tutorial-Intro noch ein paar von diesen Dingern, für die hier im Forum das Fachwort "Zollzeichen" geprägt wurde, spendiert.

Grüße und ich freue mich immer, wenn jemand sich tatsächlich mal durch eines dieser Workshop-Tuts quält.

Biber
Bitte warten ..
Mitglied: Skyemugen
10.08.2011 um 19:13 Uhr
Aloha Biber,

ähm ...

If /i "%Leser"%=="M" set Leser=Advanced

verschlimmbessern gilt aber nicht

greetz André

P.S.: Zeile 05
Bitte warten ..
Mitglied: Biber
10.08.2011 um 23:45 Uhr
[OT]
Moin Skyemugen,

Zitat von Skyemugen:
Aloha Biber,

ähm ...

> If /i "%Leser"%=="M" set Leser=Advanced

verschlimmbessern gilt aber nicht
Okay, okay, ich habe es aber wenigstens versucht...

Ich hoffe nur, dass wenn mir dereinst aus dem Buch des Lebens vorgelesen wird, wenigstens dann alle Zitate in einer geraden Anzahl von Anführungszeichen stehen.
Wahrscheinlich sind auch die Kerben auf dem Schwert von Erzengel Gabriel in Wirklichkeit "Zollzeichen". *gg

Jedenfalls ist dieses Forum manchmal ein gutes Training für das Jüngste Gericht, scheint mir.

Danke für den Hinweis - ich habe es nochmals nachverschlimmgebessert...ähhm verschlimmnachgebessert.... also nochmal geändert..

Grüße
Biber
[/OT]
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

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 ...