bacardischmal

Suchen und ersetzten in Batch datei

Hallo,

ich habe hier eine kleine Batch Datei in der unter anderem dieser Teil steckt. Dort werden die Zahlen aus einer CSV-Datei in eine andere Formatierung gebracht und eine TXT datei angelegt. Nun ist das Problem das unter %%w ab und zu anstelle von Zahlen --- vorhanden sind, kann ich irgendwie beim durchlaufen aus den --- einfach ein leerzeichen machen? Kann ich das mit in die For schleife bauen oder muss ich dafür eine neue machen?

mfg bacardi


[code]
@echo off
SETLOCAL enabledelayedexpansion

SET "quell_datei="G:\Import.csv""
SET "ziel_datei="d:\ziel.txt""
SET "log_datei="d:\script\log.txt"

SET "N=0"


if %N% GTR 0 set SKIP="SKIP=%N%" else set SKIP=

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)

REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "usebackq %SKIP% tokens=1-5 delims=; " %%s in (%quell_datei%) DO (
SET zeile=%%s %%t %%w &CALL :schreiben
)
GOTO :weiter


:schreiben
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof


:weiter
[/code]
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 194139

Url: https://administrator.de/forum/suchen-und-ersetzten-in-batch-datei-194139.html

Ausgedruckt am: 27.06.2025 um 09:06 Uhr

bastla
bastla 13.11.2012 aktualisiert um 09:28:09 Uhr
Goto Top
Hallo bacardischmal!

Da Du ohnehin "delayedExpansion" verwendest, brauchst Du eigentlich kein Unterprogramm - es sollte daher (ungetestet) auch so gehen:
ECHO off
SETLOCAL enabledelayedexpansion

SET quell_datei="G:\Import.csv"  
SET ziel_datei="d:\ziel.txt"  
SET log_datei="d:\script\log.txt"  

SET /a N=0

###########################################################################################################

if %N% GTR 0 set SKIP="SKIP=%N%" else set "SKIP="  

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)

REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben  
FOR /f "usebackq %SKIP% tokens=1-5 delims=; " %%s in (%quell_datei%) DO (  
    SET zeile=%%s %%t %%w
    IF "%%w"=="---" SET zeile=%%s %%t  
    REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben  
    IF [!zeile!] EQU  (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
)
Grüße
bastla

P.S.: Für Die "Code"-Formatierung bitte anstelle von "[code]" hier "<code>" verwenden ...
bacardischmal
bacardischmal 13.11.2012 um 18:11:49 Uhr
Goto Top
Hallo,
danke funktioniert face-wink

gruß
bacardi