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

Suchen und Ersetzen Text mit Sonderzeichen in Batch Datei

Frage Entwicklung Batch & Shell

Mitglied: akira01

akira01 (Level 1) - Jetzt verbinden

14.06.2013 um 11:35 Uhr, 2553 Aufrufe, 3 Kommentare

Hi Leute,

also ich habe ein Problem beim Suchen und Ersetzen einer Zeile und komme da nicht so recht weiter.
Ich habe folgende Batch Datei, die mir nach einem Text suche un diesen dann ersetzt. Funktioniert wunderbar mit allem ausser wenn ein "=" Zeichen im Text ist:
Also in der source.ini steht folgendes:

Dies ist der Anfang
Language=EN
Dies ist das Ende

Als Ergebnis in replace.ini kommt raus:
Dies ist der Anfang
EN=Language=DE=EN
Dies ist das Ende

Kann da jemand weiterhelfen?
Gruss Martin


01.
@ECHO off 
02.
SETLOCAL enabledelayedexpansion 
03.
 
04.
REM 
05.
REM Suchen und Ersetzen in einer Textdatei 
06.
REM  
07.
 
08.
SET "quell_datei=C:\Temp\replace\source.ini" 
09.
SET "ziel_datei=C:\Temp\replace\replace.ini" 
10.
 
11.
SET "suchen_nach1=Language^=EN" 
12.
SET "ersetzen_durch1=Language1^=DE" 
13.
 
14.
REM Loeschen der Ausgabedatei, falls sie (noch) existiert 
15.
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL) 
16.
 
17.
REM Quell-Datei zeilenweise auslesen  
18.
REM und in Variable "zeile" schreiben 
19.
 
20.
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO ( 
21.
SET zeile=%%i& CALL :ersetzen !zeile! 
22.
23.
GOTO :weiter 
24.
:ersetzen 
25.
REM innerhalb der Variable "zeile" 
26.
REM den Inhalt der Variable "suchen_nach1" suchen 
27.
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen 
28.
SET zeile=!zeile:%suchen_nach1%=%ersetzen_durch1%! 
29.
 
30.
 
31.
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben 
32.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%) 
33.
GOTO :eof 
34.
 
35.
:weiter 
36.
REM weitere Verarbeitung 
37.
ECHO Fertig^^
Mitglied: LordXearo
14.06.2013, aktualisiert um 11:51 Uhr
Hey,

das ist jetzt leider keine direkte antwort zu Deinem Problem, aber ich würde gerne mal auf PowerShell verweisen. Mit Powershell lässt sich vieles komfortabler und schneller umsetzen.

Get-Content "C:\Temp\replace\source.ini" | Foreach-Object {$_.Replace("EN","DE")} | Set-Content "C:\Temp\replace\replace.ini"

Viele Grüße

Xearo
Bitte warten ..
Mitglied: colinardo
14.06.2013 um 12:41 Uhr
dann mach das alternativ so in Zeile 28 deines Scripts:
01.
if "!zeile!" == "!suchen_nach1!" (set zeile=!ersetzen_durch1!)
Grüße Uwe
Bitte warten ..
Mitglied: pieh-ejdsch
14.06.2013, aktualisiert um 14:50 Uhr
moin akira01,

da die For-Schleife nur Zeilen mit Inhalt ausgibt ist es nicht erforderlich nach Leeren Variablen zu forschen und diese als nur Zeilenumbruch auszugeben.
Eine Ersetzung mit Leerzeilen erfolg hingegen so:
01.
:@echo off 
02.
setlocal disabledelayedexpansion 
03.
3>"C:\Temp\replace\replace.ini" ( 
04.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "C:\Temp\replace\source.ini" ') do if %%j equ Language^=EN (>&3 echo Language1=DE) else >&3 echo %%j 
05.
)
Eine Beschreibung für das Erweitern von UmgebungsVariablen mit Ersetzen.

Wenn DE nur einmal in der ini vorhanden ist könnte der Stern '*' anstatt 'Language=' zum Ersetzen Verwendet werden
01.
:@echo off 
02.
setlocal disabledelayedexpansion 
03.
3>"C:\Temp\replace\replace.ini" ( 
04.
for /f "tokens=*delims=" %%i in ('findstr /n "^" "C:\Temp\replace\source.ini" ') do (set "zeile=%%i" 
05.
 setlocal enabledelayedexpansion 
06.
 set "zeile=!zeile:*DE=.:Language=EN!" 
07.
 echo(!zeile:*:=! 
08.
 endlocal 
09.
))
Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Suchen ersetzen mit Sonderzeichen (2)

Frage von GNLen1 zum Thema Batch & Shell ...

Entwicklung
gelöst Verzeichnise sichern mit batch datei (Win10) (13)

Frage von Limbach zum Thema Entwicklung ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Teile eines Dateinamens ändern mit Batch Datei (4)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

KVM

How to: Libvirt Port forwarding

(2)

Anleitung von fundave3 zum Thema KVM ...

Heiß diskutierte Inhalte
Router & Routing
über Vmware auf eine FritzBox mit IPv6 per VPN (17)

Frage von Zockervogel zum Thema Router & Routing ...

Basic
Programmierung von Windows Programmen (8)

Frage von Ghost108 zum Thema Basic ...

Windows Server
Yoursecurecloud.de Probleme mit Pfaden (6)

Frage von WPFORGE zum Thema Windows Server ...