Verschachtelte for-Schleife
Hallo zusammen!
ich versuche aus allen Dateien in einem Verzeichnis die Inhalte zu verändern.
in dem Verzeichnis liegen mehrere Dateien
z.B.
Daten_DB191_0001_20121110_092323.csv
Daten_DB192_0004_20121510_092321.csv
Daten_DB193_0002_20121760_092345.csv
Der Inhalt dieser Dateien muss verändert werden.
Dazu habe ich folgendes gefunden:
Dieses ändert aber nur den Inhalt einer Datei.
Wie wird die übergeordnete for-Schleife gebildet damit die Änderung in allen Dateien durchgeführt wird?
For /f "tokens=1,2,3,4,5 delims=_" %%i in ('dir /b Daten*.csv') do set ?????
[Edit Biber] Codeformatierung [/Edit]
ich versuche aus allen Dateien in einem Verzeichnis die Inhalte zu verändern.
in dem Verzeichnis liegen mehrere Dateien
z.B.
Daten_DB191_0001_20121110_092323.csv
Daten_DB192_0004_20121510_092321.csv
Daten_DB193_0002_20121760_092345.csv
Der Inhalt dieser Dateien muss verändert werden.
Dazu habe ich folgendes gefunden:
Dieses ändert aber nur den Inhalt einer Datei.
SET "quell_datei=...."
SET "ziel_datei=...."
SET "suchen_nach= "
SET "ersetzen_durch=;"
REM Ausgabe einer Fehlermeldung und Programmabbruch
REM falls die Variable "suchen_nach" nicht definiert ist
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
for /f %%a in ('dir Fert*.csv') do (
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
)
GOTO :eof
:weiter
REM weitere Verarbeitung
ECHO Fertig^^!
Wie wird die übergeordnete for-Schleife gebildet damit die Änderung in allen Dateien durchgeführt wird?
For /f "tokens=1,2,3,4,5 delims=_" %%i in ('dir /b Daten*.csv') do set ?????
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195806
Url: https://administrator.de/forum/verschachtelte-for-schleife-195806.html
Ausgedruckt am: 10.05.2025 um 19:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo zbyszek!
Eher so (ungetestet):
Grüße
bastla
Eher so (ungetestet):
setlocal
SET "suchen_nach= "
SET "ersetzen_durch=;"
set "Zusatz=_neu"
REM Ausgabe einer Fehlermeldung und Programmabbruch
REM falls die Variable "suchen_nach" nicht definiert ist
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
for /f %%a in ('dir /b Daten*.csv') do (
REM Loeschen der Ausgabedatei, falls sie (noch) existiert
del /f "%%~na_neu%%~xa"
set "ziel_datei=%%~na%Zusatz%%%~xa"
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%%a"') DO (
SET "zeile=%%i" & CALL :ersetzen
)
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
setlocal enabledelayedexpansion
SET "zeile=!zeile:%suchen_nach%=%ersetzen_durch%!"
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
>>"%ziel_datei%" ECHO(!zeile!
endlocal
GOTO :eof
:weiter
REM weitere Verarbeitung
ECHO Fertig^^!
bastla