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

Batch - IP-Adressen in txt ersetzen

Mitglied: mafiosi

mafiosi (Level 1) - Jetzt verbinden

08.12.2010 um 15:47 Uhr, 2775 Aufrufe, 2 Kommentare

Hallo,

ich möchte eine Batch schreiben, mit der ich in einer txt-Datei IP-Adressen (an beliebigen Stellen in der txt-Datei), durch die IP-Adresse "0.0.0.0" ersetzen kann.
Ich konnte das ganze leider nicht ohne die Tokenfunktion lösen, was mich in der Hinsicht einschränkt, dass ich mich auf bestimmte Token festlegen muss.
Die IP-Adressen befinden meistens im Token 5 oder 6 der unterschiedlichen Zeilen.

Ein Teil des Problem konnte ich durch den unten stehenden Quellcode schon lösen, jedoch ergeben sich folgende Probleme:
- Die IP-Adressen befinden sich zwar meistens an token5 oder token6, aber nicht immer
- Leerzeilen werden gelöscht
- Zeilen in denen es nur ein Wort gibt, werden durch "zeile:=0.0.0.0" ersetzt - der alte Inhalt wird also überschrieben
- die Ausführungsgeschwindigkeit ist relativ langsam

Wie kann ich diese 4 Probleme lösen?
Viele Dank für eure Mühen!


Hier ein kleines Beispiel einer möglichen txt-Datei:
01.
 
02.
TEST 
03.
teil1 teil2 teil3 teil4 10.4.111.1 test6 test7 
04.
teil1 teil2 teil3 teil4 teil5 test6 test7 
05.
teil1 teil2 teil3 teil4 teil5 0.168.2.223 test7 
06.
die zeile bleibt gleich test test test test 
07.
 
08.
teil1 teil2 teil3 teil4 142.0.0.225 test6 test7 
09.
teil1 teil2 teil3 teil4 teil5 122.55.0.226 test7 
10.
die zeile bleibt gleich test test test test 
11.
teil1 teil2 teil3 teil4 4.168.0.228 test6 test7 
12.
die zeile bleibt gleich test test test test 
13.
teil1 teil2 teil3 teil4 test5 test6 94.23.111.254 
14.
teil1 teil2 teil3 teil4 102.168.122.211 test6 test7 
15.
 

Mein bisheriger Code ist:

01.
SETLOCAL enabledelayedexpansion 
02.
echo on 
03.
SET "quell_datei=C:\temp\test.txt" 
04.
SET "ziel_datei=C:\Temp\neu.txt" 
05.
SET "ersetzen_durch=0.0.0.0" 
06.
echo  
07.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (SET zeile=%%i& CALL :ersetzen !zeile!) 
08.
  
09.
GOTO :weiter 
10.
:ersetzen 
11.
 
12.
 
13.
FOR /F "tokens=5 delims= " %%a IN ("%zeile%") DO (SET token5=%%a) 
14.
echo %token5% 
15.
 
16.
echo %token5%|FINDSTR /R "[0-9].*[0-9].*[0-9].*[0-5]" >NUL &&SET suchen_nach=%token5% 
17.
 
18.
echo %zeile% 
19.
echo . 
20.
echo %a% 
21.
echo."TOKEN5 ist:"%token5% 
22.
echo."SUCHEN_NACH ist:" %suchen_nach% 
23.
 
24.
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%! 
25.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%) 
Mitglied: bastla
08.12.2010 um 16:13 Uhr
Hallo mafiosi und willkommen im Forum!

Wenn Du die eigentliche Arbeit einem VBScript überlässt (wird vom Batch selbst erzeugt), sollte das etwas sicherer sein:
01.
echo on & setlocal 
02.
set "quell_datei=C:\temp\test.txt" 
03.
set "ziel_datei=C:\Temp\neu.txt" 
04.
set "ersetzen_durch=0.0.0.0" 
05.
 
06.
set R=%temp%\ReplaceIP.vbs 
07.
> %R% echo Set a=WScript.Arguments:Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(a(0)).ReadAll 
08.
>>%R% echo Set rE=New RegExp:rE.Global=True:rE.Pattern="\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" 
09.
>>%R% echo fso.CreateTextFile(a(1)).Write rE.Replace(T,a(2)) 
10.
 
11.
cscript //nologo %R% "%quell_datei%" "%ziel_datei%" "%ersetzen_durch%"
Hinsichtlich der Beibehaltung von Leerzeilen noch ein Tipp: Mit einer Schleife der Art
FOR /f "tokens=1* delims=:" %%i IN ('FINDSTR /n "^" "%quell_datei%"') DO SET zeile=%%j & CALL :ersetzen
kannst Du im Unterprogramm einfach mittels
if not defined zeile echo\ & goto :eof
eine Leerzeile ausgeben und gleich wieder den Rücksprung vornehmen oder die Variable %zeile% (wegen des Unterprogramms ist übrigens keine "delayedexpansion" erforderlich und auch das Ersetzen ließe sich mit
call set "zeile=%%zeile:%suchen_nach%=%ersetzen_durch%%%"
lösen) weiter verarbeiten.

Grüße
bastla
Bitte warten ..
Mitglied: mafiosi
09.12.2010 um 21:57 Uhr
Vielen Dank bastla für die überaus schnelle Hilfe!

Deine Lösung mit einem VBScript ist wesentlich performanter als mein Ansatz, das ganze komplett in einer Batch zu lösen!

VG

mafiosi
Bitte warten ..
Ähnliche Inhalte
Webentwicklung

DynDNS: IP-Adresse durch subdomain.domain.de ersetzen

gelöst Frage von itebobWebentwicklung4 Kommentare

Hallo, mit diesem Code auf meinem Webspace leite ich die Anfragen an meine Anwendung hinter dem Router. Wie kann ...

Batch & Shell

IP-Adresse in Batch, CMD

gelöst Frage von MaxophoniBatch & Shell12 Kommentare

Hallo, ich möchte in einer Batch-Datei eine Variable einfügen, die nur die IP-Adresse anzeigt. Dies funktioniert mittels ipconfig, doch ...

Batch & Shell

Wie ersetze ich in einer .txt ein Lehrzeichen mit einen Zeilenumbruch?

gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo Zusammen, ich hoffe Ihr könnt mir helfen: folgende Ausgangssituation: Inhalt der .txt-Datei: Vorname Nachname, Abteilungskürzel <Mailadresse>; Vorname Nachname, ...

PHP

PHP IP adresse aus TXT Datei auslesen

gelöst Frage von gamerffPHP2 Kommentare

Hallo Forum, kann mir jemand zum Theme: IP Adresse aus txt datei auslesen weiterhelfen. Ich habe eine Quellcode mit ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 5 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 14 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...