Top-Themen

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 FOR Schleife mit LOOP und nachfolgender FOR Schleife

Mitglied: miczar

miczar (Level 1) - Jetzt verbinden

30.06.2016 um 12:49 Uhr, 1113 Aufrufe, 6 Kommentare, 2 Danke

Hallo zusammen,

ich habe ein Problem mit einem Batchfile.

Situation:

im Netzwerk ist kein WINS mehr vorhanden und so muss ich zwangsläufig auf die gute alte LMHOSTS ausweichen.
Da die IPs aber nicht statisch sind und ich keine Lust habe alles via cmd manuell zu machen habe ich ein Batch erstellt.

Aus einer Client_list.txt sollen die darin enthaltenen Client Namen ausgelesen und als Variable gesetzt werden.

Beispielinhalt der Client_list.txt

pc1
pc2
pc3
pc4
EOL


CODE:

:getclientname
FOR /L %%H IN (client_list.txt) DO (set clientname=%%H)
IF %%H==EOL goto:end


Jetzt wo die Variable definiert ist, soll im nächsten Schritt der Ping durchgeführt, die IP ausgelesen und in nachfolgend IP und Clientname in die LMHOSTS geschrieben werden.

:getip
ping.exe -n 1 -4 %clientname% >> temp.txt
FOR /F "tokens=2 delims=[]" %%G IN (temp.txt) DO @echo %%G %clientname% >> lmhosts
del temp.txt
goto:getclientname


Das Problem:

als Ergebnis bekomme ich nachher die gewünschte LMHOSTS (richtige Formatierung) aber sie enthält nur einen Eintrag. Und zwar die IP und den Rechnernamen des letzten gelisteten PCs aus der Client_list.txt. Wo liegt der Fehler das die Einträge nicht zeilenweise abgearbeitet werden?

Und ich bin mir fast sicher, dass ich bei der Schleifenbildung auch irgendwo Fehler drin habe.


Vielleicht kann ja jemand helfen

Gruß
Mike

Mitglied: narthan
LÖSUNG 30.06.2016 um 13:29 Uhr
Hallo Mike,

erstmal solltest du für deine 1. Schleife for /f statt /l verwenden. Soweit ich weiß benutzt man for /l nur zum erstellen von Folgen.
Dein Problem liegt aber viel eher darin, dass deine Befehle nicht in der 1. Schleife abgearbeitet werden. Deine "eigtl. übergeordnete" Schleife endet bei dir nach dieser Zeile (durch die schließende Klammer):

Auch die folgende IF Bedingung wird erst nach Abschluss der Schleife betrachtet. Insofern speichert die Schleife jeden Wert der Input Datei in die Variable, aber dein Skript führt keine weiteren Befehle damit aus. Lediglich der letzte Eintrag der Txt wird somit verarbeitet. Du musst die Klammer geöffnet lassen und die weiteren Befehle in die For-Schleife integrieren. Z.B.

Ich hoffe das hilft dir schon weiter.

Gruß,
narthan
Bitte warten ..
Mitglied: Biber
LÖSUNG 30.06.2016, aktualisiert um 13:30 Uhr
Moin miczar,

etwas verkürzt ungetestet so:
Ein Problem bei deinem Code:
Mehrfach ausgeführt nach einer FOR-Anweisung wird das, was innerhalb der Klammern nach dem "DO" steht.
Dort steht bei dir oben in der ersten FOR-Anweisung nur. set clientname=%%H.

Grüße
Biber
Bitte warten ..
Mitglied: miczar
30.06.2016 um 19:23 Uhr
Hallo narthan, Hallo Biber,

Danke für eure prompte Antwort.

Wenn ich das jetzt richtig verstanden habe gehört jede Handlungsanweisung in eine eigene Klammer.
Ich konnte eure Lösungsansätze vom Ablauf her auch nachvollziehen und habe das mal wie folgt umgesetzt.

Leider habe ich weiterhin irgendwo Fehler eingebaut. Bei Ausführung öffnet sich nur kurz ein DOS Fenster und das war es dann. Ich wollte mit Hilfe von PAUSE schauen wo es hakt aber PAUSE wird nicht angenommen. Egal wo ich es einfüge. Da keine temp.txt erstellt wird, gehe ich davon aus, dass der Fehler bereits in der ersten Schleife liegen muss.

Was gibt es bezüglich der Verwendung von PAUSE zu beachten?

@Biber
Auch deinen Lösungsvorschlag habe ich getestet aber hier komme ich zu dem gleichen Ergebnis. Keine Ausgabe und PAUSE wird auch nicht angenommen.

Könnt ihr mir eine Denkhilfe geben damit ich mich an den Fehler herantasten kann.

Gruß
Mike
Bitte warten ..
Mitglied: miczar
30.06.2016 um 19:28 Uhr
Ach so,
bezüglich der Klammern. Ich gehe mal davon aus, dass bei der zweiten Schleife ebenfalls Klammern eingefügt werden müssen?

Hier leigt vermutlich aber nicht der Fehler da selbst, wenn ich die zweite Schleife weg lasse und nach der ersten Schleife die Variable in eine Ausgabe umleite nix passiert

Gruß
Mike
Bitte warten ..
Mitglied: narthan
LÖSUNG 01.07.2016 um 12:38 Uhr
Hallo Mike,

zuerst musst du im Falle der verschachtelten Schleife die "verzögerte Erweiterung von Umgebungsvariablen" mittels

aktivieren. Infolgedessen musst du nach Deklaration der Variable clientname durch

die Variable mittels Ausrufezeichen verwenden, da es sich hier um eine verzögerte Erweiterung handelt. Falls du dich weiter in das Thema einlesen möchtest, gibt dazu einige Posts hier im Forum. Über die Internetsuche solltest du auch andere Seiten zu dem Thema finden. )

Falls du noch weitere Fragen/Probleme hast - nur zu...

Wenn du meinen Code verwenden möchtest anstelle des schöneren von Biber, kann ich dir den fertigen Code posten. Ich habe ihn bereits mit Bsp. Dateien getestet und er funktioniert.

Gruß,
narthan
Bitte warten ..
Mitglied: miczar
15.07.2016 um 21:05 Uhr
Hallo zusammen,

ich habe es leider nicht eher geschafft aber hier nun die Lösung.

Vorab noch einmal Danke für die schnelle und sachliche Hilfe bzw. Denkanstoß.

Eigentlich war die Lösung sehr einfach und nachdem ich mir das sehr gut geschriebene "Tutorial zur FOR-Schleife" auch noch einmal durchgelesen habe blieben keine Fragen mehr offen.

Ich habe es nun so umgesetzt:

Leider habe ich es zeitlich noch immer nicht geschafft mich mit der Lösung von Biber auseinanderzusetzen. Aber auch das werde ich beizeiten nachholen. Unter Verwendung von "setlocal enabledelayedexpansion" sollte aber auch diese Lösung hervorragend funktionieren.


Als kleine Info für Leser die eventuell vor der selben Aufgabenstellung stehen wie ich.

In meinem Fall waren zwei NICs verbaut und jedes Mal wurde eine falsche IP in die LMHOSTS eingetragen. Das betraf aber immer nur den PC auf dem das Script grade ausgeführt wurde. Das ganze ist aber ganz einfach zu lösen. Es muss nur die Reihenfolge der Netzwerkkarten in den erweiterten Einstellungen geändert werden.

Somit erkläre ich mein "Problem" für gelöst und verbleibe bis zur nächsten Unklarheit mit einem DANKE

Gruß
Mike
Bitte warten ..
Ähnliche Inhalte
LAN, WAN, Wireless
UnifiSwitch - Loop Protection
Frage von WaishonLAN, WAN, Wireless11 Kommentare

Moin zusammen, wir planen aktuell ein Upgrade unserer Infrastruktur und würden gerne Unifi Switche einsetzen, da wir ebenfalls mit ...

Batch & Shell
Powershell loop erzeugen
gelöst Frage von zamsi7Batch & Shell6 Kommentare

Hallo an alle, hätte mal wieder eine Frage ^^ Ich wollte ein Script schreiben, welches sich immer wieder von ...

Server
IIS6 reverse proxy loop
gelöst Frage von Kaoth123Server4 Kommentare

Hallo zusammen, ich befasse mich mit einem Thema, was mir neu ist. Folgende Funktion muss ich realisieren. Über eine ...

Windows Server
Cluster-Aware Updating loop
Frage von ChrisDynamiteWindows Server2 Kommentare

Guten Morgen, wir verwenden einen WS2016 Fileserver mit einem 3 Knoten Cluster. Bei dem Versuch ein Gesamt-Update durchzuführen scannen ...

Neue Wissensbeiträge
Windows Server

Update KB4541329 (März 2020) und Windows Server 2016 RDS 1609 Probleme

Anleitung von System-Fehler vor 12 StundenWindows Server1 Kommentar

Hallo, hier zur Info und eventuelle Hilfe: Wir hatten folgende Fehler: Windows 2016 Datacenter 1609, hier als RDS Dienste ...

Internet

Aktuelle Netzauslastung in Deutschland durch die Covid-19-Pandemie

Information von Frank vor 1 TagInternet10 Kommentare

Viele Bürger fragen sich, ob die Telekommunikationsnetze während der Covid-19-Pandemie der verstärkten Internetnutzung durch Home Office, eLearning, Videostreaming und ...

iOS

iOS-Bug unterbindet vollständiges VPN-Tunneling

Information von transocean vor 3 TageniOS

Moin, seit dem letzten Update hat iOS für iPhone und iPad ein Problem mit der Verschlüsselung. Lest selbst. Grüße ...

Sicherheit
Corona Malware über manipulierte Router
Information von sabines vor 3 TagenSicherheit

Heise berichtet über Malware, die in Zusammenhang zum Suchethema Corona steht und über DNS Einstellungen bei D-Link und Linksys ...

Heiß diskutierte Inhalte
Microsoft Office
Excel Problem Verhalten bei einem zusätzlichen angeschlossenem Monitor
Frage von JuniorgongMicrosoft Office12 Kommentare

Hallo Ich habe ein Problem mit einem User der im Home-Office sitzt. Es wurde an einem Notebook ein 2ter ...

TK-Netze & Geräte
Netphone APP nimmt kein Kontakt auf
Frage von Finchen961988TK-Netze & Geräte12 Kommentare

Hallo, ich kämfpe mit einem Problem im Bereich Netphone und der Mobil APP. Bei einem Kunden habe ich eine ...

Router & Routing
VPN Client als Router
gelöst Frage von lowsounderRouter & Routing12 Kommentare

Moin moin, zwecks Homeoffice habe ich einen Laptop zuhause der mittels OpenVPN an das Firmennetz angeschlossen ist. Adminrechte hab ...

Netzwerkmanagement
Das angegebene Netzwerkkennwort ist falsch
gelöst Frage von HeimoPonnathNetzwerkmanagement11 Kommentare

Seit einigen Tagen kann ich von meinem Windows 10 Rechner nicht mehr auf Shares auf dem Debian (buster) Rechner ...