Dateiinhalte in Textdateien tauschen
Hallo Forum
Ich habe ein Problem bei der Bearbetung von gleichartigen Textdateien.
Das folgende Programm funktioniert, leider nur mit einer einzigen Textdatei:
@echo off & setlocal enabledelayedexpansion
mode 90,60
:Start
cls
echo.
set /P Quelldatei= Dateiname der Quelldatei inkl. Endung:
prompt
if not exist %Quelldatei% @echo Die Quelldatei ist im Programmordner nicht vorhanden. & pause & goto :Start
echo.
set /P Zieldatei= Dateiname der Zieldatei inkl. Endung:
prompt
echo.
set /P SucheNach= Gesuchte Zeichenfolge:
prompt
echo.
set /P ErsetzeDurch= Zeichenfolge ersetzen durch:
prompt
echo.
echo.
for /f "delims=" %%i in ('findstr . "%Quelldatei%"') do (set Zeile=%%i & call :ersetzen !Zeile!)
goto :Ende
:ersetzen
set Zeile=!Zeile:%SucheNach%=%ErsetzeDurch%!
if [!Zeile!] equ (echo.>>%Zieldatei%) else (echo !Zeile!>>%Zieldatei%)
goto :eof
:Ende
del %Quelldatei%
ren %Zieldatei% %Quelldatei%
echo.
@echo Datei ist korrigiert.
pause
exit
Nun habe ich aber in einem ganzen Stapel von .asc's oder .csv's Änderungen vorzunehmen.
Gezielt suche ich z. B. nach "," und will es mit " " ersetzen.
Es müßte also jede *.asc abgearbeitet, der Originalname am Dateiende wieder hergestellt und die nächste .asc eingelesen werden.
Wer kann mir helfen, meine Denkblockade zu beseitigen?
Gruß und danke vorerst.
Ich habe ein Problem bei der Bearbetung von gleichartigen Textdateien.
Das folgende Programm funktioniert, leider nur mit einer einzigen Textdatei:
@echo off & setlocal enabledelayedexpansion
mode 90,60
:Start
cls
echo.
set /P Quelldatei= Dateiname der Quelldatei inkl. Endung:
prompt
if not exist %Quelldatei% @echo Die Quelldatei ist im Programmordner nicht vorhanden. & pause & goto :Start
echo.
set /P Zieldatei= Dateiname der Zieldatei inkl. Endung:
prompt
echo.
set /P SucheNach= Gesuchte Zeichenfolge:
prompt
echo.
set /P ErsetzeDurch= Zeichenfolge ersetzen durch:
prompt
echo.
echo.
for /f "delims=" %%i in ('findstr . "%Quelldatei%"') do (set Zeile=%%i & call :ersetzen !Zeile!)
goto :Ende
:ersetzen
set Zeile=!Zeile:%SucheNach%=%ErsetzeDurch%!
if [!Zeile!] equ (echo.>>%Zieldatei%) else (echo !Zeile!>>%Zieldatei%)
goto :eof
:Ende
del %Quelldatei%
ren %Zieldatei% %Quelldatei%
echo.
@echo Datei ist korrigiert.
pause
exit
Nun habe ich aber in einem ganzen Stapel von .asc's oder .csv's Änderungen vorzunehmen.
Gezielt suche ich z. B. nach "," und will es mit " " ersetzen.
Es müßte also jede *.asc abgearbeitet, der Originalname am Dateiende wieder hergestellt und die nächste .asc eingelesen werden.
Wer kann mir helfen, meine Denkblockade zu beseitigen?
Gruß und danke vorerst.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159745
Url: https://administrator.de/forum/dateiinhalte-in-textdateien-tauschen-159745.html
Ausgedruckt am: 05.05.2025 um 07:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo heimwerker und willkommen im Forum!
Unter der Annahme, dass die Ersetzung mit Deinem (übrigens nicht als formatierten) Batch tatsächlich funktioniert, könnte die Verarbeitung aller Dateien eines anzugebenden Typs (ungetestet )etwa so erfolgen:
Nur interessehalber: Wozu sollen eigentlich die Zeilen mit "
Grüße
bastla
Unter der Annahme, dass die Ersetzung mit Deinem (übrigens nicht als formatierten) Batch tatsächlich funktioniert, könnte die Verarbeitung aller Dateien eines anzugebenden Typs (ungetestet )etwa so erfolgen:
@echo off & setlocal enabledelayedexpansion
mode 90,60
set /P QuelldateiTyp= Dateityp der Quelldatei (zB asc):
prompt
if not exist *.%QuelldateiTyp% echo Keine Quelldateien vorhanden. & pause & goto :eof
set /P SucheNach= Gesuchte Zeichenfolge:
prompt
echo.
set /P ErsetzeDurch= Zeichenfolge ersetzen durch:
prompt
echo.
echo.
set "Zieldatei=%temp%\MitErsetzung.tmp"
for /f "delims=" %%a in ('dir /b /a-d *.%QuelldateiTyp%') do call :ProcessFile "%%a"
echo Alle Ersetzungen vorgenommen
pause
goto :eof
:ProcessFile
for /f "delims=" %%i in ('findstr . %1) do (set Zeile=%%i & call :ersetzen !Zeile!)
move %Zieldatei% %1
goto :eof
:ersetzen
set Zeile=!Zeile:%SucheNach%=%ErsetzeDurch%!
if [!Zeile!] equ (echo.>>%Zieldatei%) else (echo !Zeile!>>%Zieldatei%)
goto :eof
prompt
" gut sein?Grüße
bastla