Output einer Stapelverarbeitungsdatei fehlerhaft
Hi Community,
habe folgendes Phänomen und kann es mir nicht erklären bzw. komme alleine nicht mehr weiter. Bitte um Hile!!!^^
Ich habe folgende Datei: (uldokumente.csv)
A10020-1-975639001-20040525-ARA-51147;25.05.2004;ARA;1;04NK13730;51147;975639001
A10020-1-975639001-20041215-ARA-51147;15.12.2004;ARA;1;04NK29630;51147;975639001
A10020-1-995584001-CAPM;;CAPM;1;;;995584001
A10020-1-QF;;QF;1;;;
Hier ist die Batch dazu: (uldaten.bat)
for /F "tokens=1,2,3,4,5,6,7 delims=;" %%a in (uldokumente.csv) do call :step1 %%a %%b %%c %%d %%e %%f %%g
:step1
for /R %%f in (%1.*) do echo %4;%3;%7;%2;%5;%6;%%~dpnxf >> test.txt
Hier der Output: (test.txt)
1;ARA;975639001;25.05.2004;04NK13730;51147;C:\test\uldaten\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
1;ARA;975639001;15.12.2004;04NK29630;51147;C:\test\uldaten\2004-12-15\A10020-1-975639001-20041215-ARA-51147.rtf
995584001;1;;CAPM;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
;1;;QF;;;C:\test\uldaten\A10020-1-QF.rtf
Frage:
Warum sind die letzten beiden Zeilen des Outputs so verdreht. Eigentlich müsste doch dieser Output entstehen:
1;CAPM;995584001;;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
1;QF;;;;;C:\test\uldaten\A10020-1-QF.rtf
Kann mir hier jemand weiterhelfen, wie ich den von mir gewollten Output erzeugen kann?
MfG
Rübe
[Edit Biber] Von "Windows" nach "Batchkrams" verschoben [/Edit]
habe folgendes Phänomen und kann es mir nicht erklären bzw. komme alleine nicht mehr weiter. Bitte um Hile!!!^^
Ich habe folgende Datei: (uldokumente.csv)
A10020-1-975639001-20040525-ARA-51147;25.05.2004;ARA;1;04NK13730;51147;975639001
A10020-1-975639001-20041215-ARA-51147;15.12.2004;ARA;1;04NK29630;51147;975639001
A10020-1-995584001-CAPM;;CAPM;1;;;995584001
A10020-1-QF;;QF;1;;;
Hier ist die Batch dazu: (uldaten.bat)
for /F "tokens=1,2,3,4,5,6,7 delims=;" %%a in (uldokumente.csv) do call :step1 %%a %%b %%c %%d %%e %%f %%g
:step1
for /R %%f in (%1.*) do echo %4;%3;%7;%2;%5;%6;%%~dpnxf >> test.txt
Hier der Output: (test.txt)
1;ARA;975639001;25.05.2004;04NK13730;51147;C:\test\uldaten\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
1;ARA;975639001;15.12.2004;04NK29630;51147;C:\test\uldaten\2004-12-15\A10020-1-975639001-20041215-ARA-51147.rtf
995584001;1;;CAPM;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
;1;;QF;;;C:\test\uldaten\A10020-1-QF.rtf
Frage:
Warum sind die letzten beiden Zeilen des Outputs so verdreht. Eigentlich müsste doch dieser Output entstehen:
1;CAPM;995584001;;;;C:\test\uldaten\A10020-1-995584001-CAPM.tif
1;QF;;;;;C:\test\uldaten\A10020-1-QF.rtf
Kann mir hier jemand weiterhelfen, wie ich den von mir gewollten Output erzeugen kann?
MfG
Rübe
[Edit Biber] Von "Windows" nach "Batchkrams" verschoben [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93303
Url: https://administrator.de/contentid/93303
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo rübensau!
Auf Basis der in diesem Beitrag neulich dargestellten Lösungsvorschläge könnte das so gehen:
Voraussetzung ist, dass Deine Daten kein "$" enthalten - falls doch, einfach in den Zeilen 7 und 11 durch ein geeignetes Zeichen ersetzen.
Wenn es keine "!" in Deinen Daten gibt, lässt sich durch Verwendung von "delayedExpansion" noch eine kürzere Schreibweise (wie im oben angesprochenen Beitrag) erzielen:
Grüße
bastla
Auf Basis der in diesem Beitrag neulich dargestellten Lösungsvorschläge könnte das so gehen:
@echo off & setlocal
for /f "delims=" %%i in (uldokumente.csv) do set "EinZeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
for /F "tokens=1-7 delims=;" %%a in ("%EinZeile:;;=;$;%") do call :Step1 %%a %%b %%c %%d %%e %%f %%g
goto :eof
:Step1
set "AusZeile=%4;%3;%7;%2;%5;%6"
for /R %%f in (%1.*) do echo %AusZeile:$=%;%%~ff >> test.txt
goto :eof
Wenn es keine "!" in Deinen Daten gibt, lässt sich durch Verwendung von "delayedExpansion" noch eine kürzere Schreibweise (wie im oben angesprochenen Beitrag) erzielen:
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in (uldokumente.csv) do (
set "EinZeile=%%i"
for /F "tokens=1-7 delims=;" %%a in ("!EinZeile:;;=;$;!") do call :Step1 %%a %%b %%c %%d %%e %%f %%g
)
goto :eof
:Step1
set "AusZeile=%4;%3;%7;%2;%5;%6"
for /R %%f in (%1.*) do echo %AusZeile:$=%;%%~ff >> test.txt
goto :eof
bastla
Hallo rübensau!
Grüße
bastla
P.S.: Ein "Delimmer" macht's oft noch schlimmer - versuch's mal mit einem "Delimiter" ... *SCNR*
Ich habs schon versucht einen zusätzlichen Delimmer - einzubauen
Du musst ja nicht alles in einem Durchgang erledigen - ersetze Zeile 9 durchfor /f "delims=-" %%t in ("%EinZeile%") do set "AusZeile=%%t"
set "AusZeile=%AusZeile%;%4;%3;%7;%2;%5;%6"
bastla
P.S.: Ein "Delimmer" macht's oft noch schlimmer - versuch's mal mit einem "Delimiter" ... *SCNR*