Datum verdeutschen mittels Batch
Hallo Community,
habe folgende txt Datei:
A10020;05.25.2004;ARA;1;04NK13730;51147;975639001;C:\test\uldaten\A10020\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
A10020;;QF;1;;;;C:\test\uldaten\A10020\A10020-1-QF.rtf
A10079;;CAPM;1;;;951013001;C:\test\uldaten\A10079\A10079-1-951013001-CAPM.tif
A10079;08.13.2003;A;1;03NK20941;90120;951013001;C:\test\uldaten\A10079\2003-08-13\A10079-1-951013001-20030813-A-90120.tif
Um diese txt zu erzeugen hatte ich dies Batch benutzt:
>
Da wo ein Datum vorhanden ist(2. Token) möchte ich es in das deutsche Datumsformat umwandeln.
Wenn im 2.Token kein Datum ist, dann soll auch nichts passieren.
Der Output soll danach wie oben in der txt beibehalten werden.
Weiß nicht wo und wie ich ansetzen soll.
Bin für jede Hilfe dankbar.
MfG
Rübe
habe folgende txt Datei:
A10020;05.25.2004;ARA;1;04NK13730;51147;975639001;C:\test\uldaten\A10020\2004-05-25\A10020-1-975639001-20040525-ARA-51147.rtf
A10020;;QF;1;;;;C:\test\uldaten\A10020\A10020-1-QF.rtf
A10079;;CAPM;1;;;951013001;C:\test\uldaten\A10079\A10079-1-951013001-CAPM.tif
A10079;08.13.2003;A;1;03NK20941;90120;951013001;C:\test\uldaten\A10079\2003-08-13\A10079-1-951013001-20030813-A-90120.tif
Um diese txt zu erzeugen hatte ich dies Batch benutzt:
setlocal enabledelayedexpansion
for /f "skip=1 eol= delims=" %%i in (uldokumente.csv) do (
set "in=;%%i;"
set "in=!in:;;=;NULL;!"
for /f "delims=; tokens=1-8" %%a in ("!in:;;=;NULL;!") do (
if not "%%a"=="NULL" set "k=%%a"
echo !k!;%%b;%%c;%%d;%%e;%%f;%%g;%%h >> d.log
))
for /f "tokens=1-8 delims=;" %%a in (d.log) do (
call :searchexist %%a %%b %%c %%d %%e %%f %%g %%h
)
for /f "tokens=1-8 delims=;" %%a in (d.log) do (
call :searchnotexist %%a %%b %%c %%d %%e %%f %%g %%h
)
goto L_END
:searchexist
for /R C:\test\uldaten\%1 %%a in (%2.*) do (
echo %1;%2;%3;%4;%5;%6;%7;%8;%%~fa >> found.log
)
goto :EOF
:searchnotexist
set suchdatei=C:\test\uldaten\%1\%2.*
dir %suchdatei% /s
if %errorlevel% gtr 0 echo %1;%2;%3;%4;%5;%6;%7;%8 >> notfound.log
goto :EOF
:L_END
for /F "tokens=1-9 delims=;" %%a in (found.log) do (
echo %%a;%%c;%%d;%%e;%%f;%%g;%%h;%%i >> import.log
)
for /f "delims=" %%i in (import.log) do (
set "Line=%%i" & set Line=!Line:NULL=! & echo !Line!>> importzero.log
)
Da wo ein Datum vorhanden ist(2. Token) möchte ich es in das deutsche Datumsformat umwandeln.
Wenn im 2.Token kein Datum ist, dann soll auch nichts passieren.
Der Output soll danach wie oben in der txt beibehalten werden.
Weiß nicht wo und wie ich ansetzen soll.
Bin für jede Hilfe dankbar.
MfG
Rübe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94994
Url: https://administrator.de/contentid/94994
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo rübensau!
Ich weiß zwar nicht so genau, was Du mit "deutschem" Datumsformat meinst, aber um etwa die Darstellung mit "JJJJ-MM-TT" zu erhalten, sollte es genügen, die Zeile 8 zu ersetzen durch:
Grüße
bastla
Ich weiß zwar nicht so genau, was Du mit "deutschem" Datumsformat meinst, aber um etwa die Darstellung mit "JJJJ-MM-TT" zu erhalten, sollte es genügen, die Zeile 8 zu ersetzen durch:
set d=
for /f "tokens=1-3 delims=." %%x in ("%%b") do set "d=%%z-%%y-%%x"
echo !k!;!d!;%%c;%%d;%%e;%%f;%%g;%%h >> d.log
bastla