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

Printed on: April 18, 2024 at 08:04 o'clock

Member: bastla
bastla Aug 21, 2008 at 11:36:19 (UTC)
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
Member: ruebensau
ruebensau Sep 24, 2008 at 08:22:05 (UTC)
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.