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

Per Batch aus einer textdatei ip addresse in cmd befehl kopieren

Frage Entwicklung Batch & Shell

Mitglied: vanitas

vanitas (Level 1) - Jetzt verbinden

29.01.2008, aktualisiert 30.01.2008, 8706 Aufrufe, 9 Kommentare

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?


Mit freundlichen Grüßen Vanitas
Mitglied: bastla
29.01.2008 um 16:49 Uhr
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,
...
01.
@echo off & setlocal 
02.
set "IPListe=D:\DeineTextDatei.txt" 
03.
set "Ergebnis=D:\Pings.txt" 
04.
 
05.
if exist "%Ergebnis%" del "%Ergebnis%" 
06.
for /f "usebackq tokens=2" %%i in ("%IPListe%") do call :ProcessIP %%i 
07.
goto :eof 
08.
 
09.
:ProcessIP 
10.
ping %1 >>"%Ergebnis%" 
11.
ping -n 60 localhost>nul
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.

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:
01.
ping %1|findstr /c:"(100% Verlust)">nul && (echo %1 - offline>>"%Ergebnis%") || echo %1 - online>>"%Ergebnis%"
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
Bitte warten ..
Mitglied: vanitas
29.01.2008 um 17:36 Uhr
ok danke erstmal für deine Hilfe
hatte nicht gedacht das das so komplex ist
die .txt datei war nur ein Beispiel, dachte du könntest die IP Adresse evtl. über *.*.*.* suchen oder so..
wenn das nicht ginge dann ist die textdatei folgendermaßen aufgebaut:
192.168.2.44:
192.168.3.22:
192.168.23.21:

das bedeutet die IP steht am Anfang der Zeile und ist mit einem Doppelpunkt von dem rest der zeile getrennt..
der befehl "ping" war eigentlich auch nur ein beispiel
gibt es da eine Möglichkeit das er der gefundenen IP eine Variabel zuweist, die ich dann im CMD Befehl nur an die nötige stelle setzen muss? zb.

"der Suchvorgang nach den verschiedenen IPs"
programm.exe IP Adresse1 >>"%Ergebnis%"
programm.exe IP Adresse2 >>"%Ergebnis%"



Danke und mit freundlichen Gruß!
Bitte warten ..
Mitglied: bastla
29.01.2008 um 17:53 Uhr
Hallo vanitas!

... 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:
01.
@echo off & setlocal 
02.
set "IPListe=D:\DeineTextDatei.txt" 
03.
set "Ergebnis=D:\Pings.txt" 
04.
 
05.
if exist "%Ergebnis%" del "%Ergebnis%" 
06.
for /f "usebackq delims=:" %%i in ("%IPListe%") do call :ProcessIP %%i 
07.
goto :eof 
08.
 
09.
:ProcessIP 
10.
programm.exe %1 >>"%Ergebnis%" 
11.
ping -n 60 localhost>nul
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:
01.
echo der Suchvorgang nach den verschiedenen IPs>"%Ergebnis%"
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
Bitte warten ..
Mitglied: vanitas
29.01.2008 um 18:21 Uhr
sehr schön ..
noch eine frage ..
ist das nun nur ein Vorgang für die 1. Zeile und damit für die erste IP oder wiederholt er automatisch diesen Vorgang bis er keine IP mehr findet und führt dann die Befehle aus?
dann müsste er ja eigentlich verschieden Variablen haben oder?

Die batch soll automatisch solange nach IPs suchen bis er keine mehr finden kann und dann die befehle ausführen oder macht er das in deiner version zwischendrin?
Bitte warten ..
Mitglied: bastla
29.01.2008 um 18:25 Uhr
Hallo vanitas!

Wie schon oben beschrieben, wird sofort nach dem Auslsesen die IP (im Unterprogramm) verarbeitet (also "zwischendrin" ). Gelesen werden alle Zeilen der Textdatei, wobei vorausgesetzt wird, dass auch jede Zeile mit einer IP beginnt.

Grüße
bastla
Bitte warten ..
Mitglied: vanitas
29.01.2008 um 21:05 Uhr
noch eine letzte frage (=

wenn er jetzt in dem .txt file keine IP findet ... dann funktioniert das ganze ja nicht das bedeutet er erstellt kein "Ergebnis" und führt auch die befehle dannach nicht mehr aus...

wie kann man das umgehen?
bzw. kann man ihm sagen das er dann einfach den nächsten befehl ausführen soll?

danke dir!
Bitte warten ..
Mitglied: bastla
29.01.2008 um 21:21 Uhr
Hallo vanitas!

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 einem
01.
if not exist "%IPListe%" goto :Weiter 
02.
if exist "%Ergebnis%" del "%Ergebnis%" 
03.
for /f "usebackq delims=:" %%i in ("%IPListe%") do call :ProcessIP %%i 
04.
:Weiter 
05.
:: hier weitere Befehle 
06.
:: 
07.
:: und jetzt ist Ende 
08.
goto :eof 
09.
 
10.
:ProcessIP 
11.
programm.exe %1 >>"%Ergebnis%" 
12.
ping -n 60 localhost>nul
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.

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
Bitte warten ..
Mitglied: vanitas
30.01.2008 um 18:42 Uhr
hm danke dir !!

noch ne kleine Frage ..

wie kann ich eine unendlos schleife einbauen so das sich die bat immer wieder von alleine startet ..
ohne das sich das irgendwann aufhängt und abbricht.

gibs irgendwelche optionen die ich in den code, ohne die option, das die ipliste leer is einbauen könnte damit er wenn er evtl. mal n fehler macht einfach diesen umgeht und neustartet die bat?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Biber
30.01.2008 um 19:16 Uhr
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.
Und in die erste Zeile nach "@echo off & setlocal" und den Kommentarzeilen diese Sprungmarke reinklimpern..
:start

Aber for WTF werden denn heute noch Batches nachgefragt, die 365x7x24 laufen und rumpingen??

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

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

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

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