zbyszek
Goto Top

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.
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]

Content-Key: 195806

Url: https://administrator.de/contentid/195806

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: bastla
bastla 13.12.2012 aktualisiert um 22:25:01 Uhr
Goto Top
Hallo zbyszek!

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^^!
Grüße
bastla
Mitglied: zbyszek
zbyszek 14.12.2012 um 08:34:04 Uhr
Goto Top
Vielen Dank läuft super !