Batchscript mit Benutzereingabe - Variable überprüfen misslingt
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.
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
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.
Set /P NETZ="Welches Netzwerk ueberpruefen? (NETZ1 - NETZ6)"
If /i %NETZ%=="NETZ1" set NETZ=NETZ1
If /i %NETZ%=="NETZ2" set NETZ=NETZ2
If /i %NETZ%=="NETZ3" set NETZ=NETZ3
If /i %NETZ%=="NETZ4" set NETZ=NETZ4
If /i %NETZ%=="NETZ5" set NETZ=NETZ5
If /i %NETZ%=="NETZ6" set NETZ=NETZ6
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171245
Url: https://administrator.de/contentid/171245
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
15 Kommentare
Neuester Kommentar
Aloha,
... vergleiche niemals Zollzeichen mit Luft.
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
... 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
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
auszuführen, sollte sich das vielleicht so machen lassen:
Die Idee dahinter: Durchsuche den aktuellen Batch (%0) nach einer Zeile ":gewähltesNetz" und, wenn gefunden, springe dort hin ...
Grüße
bastla
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
if defined NETZ findstr /i /x ":%NETZ%" %0 >nul && goto :%NETZ%
echo Falsche Eingabe
goto :eof
Grüße
bastla
Aloha bastla,
(gut du bist noch am rumeditieren deines Codes, wie ich mehrfach bemerkt habe )
Warum
Warum nicht
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 ...
(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 ...
@Skyemugen
Grüße
bastla
[Edit]
...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]
Warum
Wunsch des TE :goto :eof?
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]
Aloha,
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 ^_^
greetz André
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é
Hallo LittleFlame!
Grüße
bastla
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
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
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
Moin LittleFlame,
Das war wirklich ein durch Copy&Paste verdreifachterTippfeh 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
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.....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?
Das war wirklich ein durch Copy&Paste verdreifachter
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
[OT]
Moin Skyemugen,
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]
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...Aloha Biber,
ähm ...
> If /i "%Leser"%=="M" set Leser=Advanced
verschlimmbessern gilt aber nicht
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]