bacardischmal
Goto Top

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]

Content-ID: 194139

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

Ausgedruckt am: 05.11.2024 um 09:11 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