Per Batch aus einer textdatei ip addresse in cmd befehl kopieren
Hallo an Alle ..
Bin neu dazugestoßen und finde euer board richtig gut vorallem von den Lösungstipps / Lösungen.
Mein Frage / Problem:
Ich möchte aus einer vorhandenen Textdatei (das foolgendermaßen in etwa aussieht) :
blaaaaaa 192.168.1.1 blaaaaaaa
blaaaaaa 192.168.34.5 blaaaaaa
blaaaaaa 192.168.22.1 blaaaaaa
hier soll nun mit Hilfe einer .bat als erstes für die IP in der ersten Zeile eine Variabel gesetzt werden,
dann für die 2. und dann für die 3. (wenn das nicht funktioniert mit den Zeilen dann könnte er auch
automatisch die zeile löschen deren ip er schon kopiert hat)
Wenn er keine IP mehr findet soll er die IP aus der ersten Zeile in einen CMD Befehl kopieren
z.B.
ping IP 1
ping IP 2
ping IP 3
das ergebnis soll er dann in eine andere text datei speichern
und noch ein Frage ist es möglich in eine batch datei eine zeitliche verzögerung bis zum nächten befehl einzubauen
in etwa 1 min. oder sowas?
mfg Vanitas
Bin neu dazugestoßen und finde euer board richtig gut vorallem von den Lösungstipps / Lösungen.
Mein Frage / Problem:
Ich möchte aus einer vorhandenen Textdatei (das foolgendermaßen in etwa aussieht) :
blaaaaaa 192.168.1.1 blaaaaaaa
blaaaaaa 192.168.34.5 blaaaaaa
blaaaaaa 192.168.22.1 blaaaaaa
hier soll nun mit Hilfe einer .bat als erstes für die IP in der ersten Zeile eine Variabel gesetzt werden,
dann für die 2. und dann für die 3. (wenn das nicht funktioniert mit den Zeilen dann könnte er auch
automatisch die zeile löschen deren ip er schon kopiert hat)
Wenn er keine IP mehr findet soll er die IP aus der ersten Zeile in einen CMD Befehl kopieren
z.B.
ping IP 1
ping IP 2
ping IP 3
das ergebnis soll er dann in eine andere text datei speichern
und noch ein Frage ist es möglich in eine batch datei eine zeitliche verzögerung bis zum nächten befehl einzubauen
in etwa 1 min. oder sowas?
mfg Vanitas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79449
Url: https://administrator.de/forum/per-batch-aus-einer-textdatei-ip-addresse-in-cmd-befehl-kopieren-79449.html
Ausgedruckt am: 10.05.2025 um 15:05 Uhr
9 Kommentare
Neuester Kommentar
Hallo vanitas und willkommen im Forum!
Was Dir vorschwebt ist zwar auch machbar, aber in Batch wäre der Ablauf einfacher so:
Lies IP aus erster Zeile, führe Befehl für IP aus, Pause,
lies IP aus nächster Zeile, führe Befehl für IP aus, Pause,
...
Das Auslesen funktioniert mit dem obigen Code nur, wenn in Deiner Datei tatsächlich das erste Leerzeichen in der Zeile unmittelbar vor und das zweite Leerzeichen unmittelbar nach der IP-Adresse steht - anderenfalls müsstest Du angeben, wo sich die IP-Adresse in der Zeile befindet (Position) / nach welchem Kriterium sie zu finden ist.
Zusätzliche Parameter (zB "-n" oder "-w") für den "ping" kannst Du ja noch ergänzen ...
Eine Pause lässt sich, wie im Beispiel oben gezeigt, ebenfalls durch einen "ping" realisieren - alternativ dazu gibt es etwa "sleep.exe" oder andere externe Tools.
Grüße
bastla
Was Dir vorschwebt ist zwar auch machbar, aber in Batch wäre der Ablauf einfacher so:
Lies IP aus erster Zeile, führe Befehl für IP aus, Pause,
lies IP aus nächster Zeile, führe Befehl für IP aus, Pause,
...
@echo off & setlocal
set "IPListe=D:\DeineTextDatei.txt"
set "Ergebnis=D:\Pings.txt"
if exist "%Ergebnis%" del "%Ergebnis%"
for /f "usebackq tokens=2" %%i in ("%IPListe%") do call :ProcessIP %%i
goto :eof
:ProcessIP
ping %1 >>"%Ergebnis%"
ping -n 60 localhost>nul
das ergebnis soll er dann in eine andere text datei speichern
"Ergebnis" wäre noch näher zu definieren - vermutlich meinst Du damit "erreichbar" oder "nicht erreichbar", wofür sich etwa folgende "ping"-Zeile ergäbe:ping %1|findstr /c:"(100% Verlust)">nul && (echo %1 - offline>>"%Ergebnis%") || echo %1 - online>>"%Ergebnis%"
Eine Pause lässt sich, wie im Beispiel oben gezeigt, ebenfalls durch einen "ping" realisieren - alternativ dazu gibt es etwa "sleep.exe" oder andere externe Tools.
Grüße
bastla
Hallo vanitas!
Soferne Du die Ergebnisdatei mit der Zeile "der Suchvorgang nach den verschiedenen IPs" beginnen willst, könntest Du die "if exist ..."-Zeile durch folgende ersetzen:
Durch die Verwendung eines einzelnen ">" wird eine ev schon bestehende Datei überschrieben (mit ">>" wird die Zeile am Ende der Datei angefügt).
Grüße
bastla
... der gefundenen IP eine Variabel zuweist, die ich dann im CMD Befehl nur an die nötige stelle setzen muss?
Diese Variable ist "%1" im Unterprogramm ":ProcessIP" - zusammen mit der geänderten Textdatei sähe das so aus:@echo off & setlocal
set "IPListe=D:\DeineTextDatei.txt"
set "Ergebnis=D:\Pings.txt"
if exist "%Ergebnis%" del "%Ergebnis%"
for /f "usebackq delims=:" %%i in ("%IPListe%") do call :ProcessIP %%i
goto :eof
:ProcessIP
programm.exe %1 >>"%Ergebnis%"
ping -n 60 localhost>nul
echo der Suchvorgang nach den verschiedenen IPs>"%Ergebnis%"
Grüße
bastla
Hallo vanitas!
Soferne allerdings die Textdatei doch vorhanden, aber leer ist, wird einfach das Unterprogramm durch die "for"-Schleife nicht aufgerufen - was zum gleichen Ergebnis führt.
Nicht erkennen kann der Batch in dieser Version, wenn die Textdatei zwar irgendwelchen Text, aber keine IP-Adresse enthält - es wird stur der erste Teil einer Zeile bis zum ":" oder, wenn es keinen ":" gibt, die gesamte Zeile, als IP interpretiert.
Grüße
bastla
wenn er jetzt in dem .txt file keine IP findet
Dem würde ich vorbeugen, indem dann gar keine Textdatei vorhanden wäre, was sich mit einemif not exist "%IPListe%" goto :Weiter
if exist "%Ergebnis%" del "%Ergebnis%"
for /f "usebackq delims=:" %%i in ("%IPListe%") do call :ProcessIP %%i
:Weiter
:: hier weitere Befehle
::
:: und jetzt ist Ende
goto :eof
:ProcessIP
programm.exe %1 >>"%Ergebnis%"
ping -n 60 localhost>nul
Nicht erkennen kann der Batch in dieser Version, wenn die Textdatei zwar irgendwelchen Text, aber keine IP-Adresse enthält - es wird stur der erste Teil einer Zeile bis zum ":" oder, wenn es keinen ":" gibt, die gesamte Zeile, als IP interpretiert.
kann man ihm sagen das er dann einfach den nächsten befehl ausführen soll?
Musst Du nicht - der wird nach der "for"-Schleife ohnehin ausgeführt ...Grüße
bastla
wie kann ich eine unendlos schleife einbauen ...
Das sprengt mein räumliches Vorstellungsvermögen....so das sich die bat immer wieder von alleine startet ..
Google mal nach "perpetuum bätchele"ohne das sich das irgendwann aufhängt und abbricht.
Dann wechsele auf ein Unix-System...- Du kannst überall dort, wo der Batch aufhört oder ein "goto :eof" außerhalb einer Unterroutine steht, ein "goto :start" einfügen.
:start
Aber for WTF werden denn heute noch Batches nachgefragt, die 365x7x24 laufen und rumpingen??
Grüße
Biber