Batch: CRLF nach Suchen und Ersetzen in Datei
Habe öfters ein Text File in dem ich bestimmte strings ersetzen muss und dazu dieses Batch gefunden:
Der zu ersetzende Text ist eindeutig und das Batch funktioniert auch.
Aber:
es fügt an das Ende jeder Zeile CRLF (Hex 20 20 0D 0A) hinzu, was kontraproduktiv ist.
Wie kann ich das vermeiden
Danke für alle Antworten
@echo on & setlocal enabledelayedexpansion
set "Datei=c:\noname.sx"
set "Datei2=c:\noname.s19"
set "Von=S725"
set "Nach=S325"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%"
move /y "%t%" "%Datei2%"
Der zu ersetzende Text ist eindeutig und das Batch funktioniert auch.
Aber:
es fügt an das Ende jeder Zeile CRLF (Hex 20 20 0D 0A) hinzu, was kontraproduktiv ist.
Wie kann ich das vermeiden
Danke für alle Antworten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671887
Url: https://administrator.de/forum/batch-crlf-nach-suchen-und-ersetzen-in-datei-671887.html
Ausgedruckt am: 12.03.2025 um 16:03 Uhr
8 Kommentare
Neuester Kommentar
https://stackoverflow.com/questions/7105433/windows-batch-echo-without-n ...
echo|set /p="Dein String ohne abschließenden Zeilenumbruch"
echo|set /p="Dein String ohne abschließenden Zeilenumbruch"
Zitat von @ppm007:
Wie kann ich das vermeiden
Nutze PowerShell mit einer passenden
(Get-Content -Path <file>).Replace (<von>, <nach>) | Set-Content <file>
funktioniert leider nicht
doch, so machen ...@echo off & setlocal enabledelayedexpansion
set "Datei=c:\noname.sx"
set "Datei2=c:\noname.s19"
set "Von=S725"
set "Nach=S325"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
>"%t%" (for /f "usebackq delims=" %%i in ("%Datei%") do (
set "Line=%%i"
echo|set /p="!Line:%Von%=%Nach%!"
))
move /y "%t%" "%Datei2%"
Aber eher besser gleich die Powershell nehmen ...
[IO.File]::WriteAllText("C:\noname.s19",(Get-Content "C:\noname.sx" -raw).replace('S725','S325'))
Wolltest du doch so, du wolltest die Zeilenenden entfernen... wie bitte willst du mehrere Zeilen voneinander "ohne" CRLF / LF trennen????, Zeilen werden Standardmäßig damit getrennt, ganz ohne geht es nicht, nur wenn es nur eine einzige Zeile ist dann schon ...
??
Ich sag nur Datei-Encoding, da bekommst du mit Batch wirklich Spaß ...
mit Powershell habe ich keinen Verwandten
Ich sag nur Datei-Encoding, da bekommst du mit Batch wirklich Spaß ...