ruebensau
Goto Top

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:

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

Content-Key: 94994

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

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: bastla
bastla 21.08.2008 um 13:36:19 Uhr
Goto Top
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:
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
Grüße
bastla
Mitglied: ruebensau
ruebensau 24.09.2008 um 10:22:05 Uhr
Goto Top
danke, hat wunderbar geklappt. Ist eben schon ziemlich lange her, dass ich überhaupt was mit batchen gemacht habe und dann auch nur die einfachsten Sachen.