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

Frage Entwicklung Batch & Shell

Mitglied: mafiosi

mafiosi (Level 1) - Jetzt verbinden

08.12.2010 um 15:47 Uhr, 2767 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, ...

Batch & Shell
IP Adressen im NEtz in eine txt Datei exportieren
gelöst Frage von BlackVictoryBatch & Shell2 Kommentare

Einen wunderschönen Tag zusammen. Ich finde einfach nichts zu dem Thema. Habe Google schon befragt und das Forum hier ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 13 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 18 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 18 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...