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]
Please also mark the comments that contributed to the solution of the article
Content-Key: 93303
Url: https://administrator.de/contentid/93303
Printed on: April 24, 2024 at 23:04 o'clock
4 Comments
Latest comment
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*