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.
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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 159745
Url: https://administrator.de/contentid/159745
Printed on: May 8, 2024 at 04:05 o'clock
2 Comments
Latest comment
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