nolle99
Goto Top

Datum in einer CSV datei in Tage umwandeln

Hi leute

Ich habe eine .CSV Datei in der folgendes steht

123412413243;weber;02.08.2016
23434412413243;meier;18.08.2016
1232434413243;kurt;;
993413243243243;meier;25.08.2016
993413243243243;kleber;25.11.2016

Jetzt soll eine neue Datei erzeugt werden bei der das Datum ersetzt wird durch die Anzahl der Tage von heute bis zu dem Datum.

Geht sowas mit einer batch???? Ich habe gegooglt und was zu "set Datum" gefunden aber ich habe von sowas leider keine Ahnung.

Content-Key: 311484

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

Printed on: April 24, 2024 at 06:04 o'clock

Mitglied: 129813
129813 Aug 02, 2016 updated at 15:22:23 (UTC)
Goto Top
Powershell
$csv = Import-CSV 'c:\data.csv' -delimiter ";" -Head '1','2','3'  
$csv | ?{$_.3 -ne ''} | %{$_.3 = ((get-date $_.3) - (get-date)).Days}  
$csv | export-csv 'c:\data.csv' -delimiter ";" -NoType -Encoding UTF8  
Regards
Member: TsukiSan
TsukiSan Aug 03, 2016 at 09:58:57 (UTC)
Goto Top
Oder VBS

Const Trenner = ";"  
Const Spalte = 2
Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")  
MeineZeilen = Split(FSO.OpenTextFile("MeineCSV.csv").ReadAll,vbcrlf)  
For i = 0 to Ubound(MeineZeilen) - 1
	Temp = Split(MeineZeilen(i),Trenner)
	If Not Temp(Spalte) = "" Then  
		Msgbox(DateDiff("d",temp(Spalte),Now))  
	End If

Next

Set FSO = Nothing

Gruss

Tsuki
Mitglied: 129813
129813 Aug 03, 2016 updated at 10:41:42 (UTC)
Goto Top
Msgbox(DateDiff("d",temp(Spalte),Now))
Why don't you write it back to the file, instead of displaying face-smile?
Member: TsukiSan
TsukiSan Aug 03, 2016 at 10:49:14 (UTC)
Goto Top
Hi highload,

because the TO should also learn something while we provide him/her with a plenty of solutions face-smile

br

Tsuki
Mitglied: 129813
129813 Aug 03, 2016 updated at 11:07:57 (UTC)
Goto Top
Zitat von @nolle99:
ich habe von sowas leider keine Ahnung.
I wish him good luck face-wink, or a good portion of learning attendance.
Member: TsukiSan
TsukiSan Aug 03, 2016 at 11:08:03 (UTC)
Goto Top
so do i face-smile
Member: nolle99
nolle99 Aug 03, 2016 at 19:24:45 (UTC)
Goto Top
Sry ich war krank face-sad

Ich habe es gerade getestet und bekomme in der neuen Datei nur ein  ausgegeben? Was ist falsch???

Das Powershellscript habe ich in eine .ps1 geschrieben und dann ausgeführt.
Member: nolle99
nolle99 Aug 03, 2016 at 19:25:43 (UTC)
Goto Top
$csv = Import-CSV 'c:\data.csv' -delimiter ";" -Head '1','2','3'  
$csv | ?{$_.3 -ne ''} | %{$_.3 = ((get-date $_.3) - (get-date)).Days}  
$csv | export-csv 'c:\data.csv' -delimiter ";" -NoType -Encoding UTF8  

Sry ich war krank

Ich habe es gerade getestet und bekomme in der neuen Datei nur ein  ausgegeben? Was ist falsch???

Das Powershellscript habe ich in eine .ps1 geschrieben und dann ausgeführt.
Mitglied: 129813
129813 Aug 03, 2016 updated at 19:32:01 (UTC)
Goto Top
Your file encoding is possibly the error try adding -encoding Default parameter to line 1, or choose the correct encoding. Important Note: This parameter is only availabe from PS 3.0 upwards!
Member: nolle99
nolle99 Aug 04, 2016 at 07:23:06 (UTC)
Goto Top
-encoding Default funktioniert. Das Problem ist aber das nun ö,ä,ü gelöscht werden face-sad
Mitglied: 129813
129813 Aug 04, 2016 updated at 07:30:46 (UTC)
Goto Top
You have to determine your source encoding, when it' default then you also have to export it with the right encoding face-wink
So change the export encoding in line 3 also to default, not UTF8.

Otherwise the encoding of your csv is non standard.
Member: nolle99
nolle99 Aug 04, 2016 at 07:45:44 (UTC)
Goto Top
Hatte ich schon. Trotzdem werden öäü nicht kopiert. in der Grunddatei sind diese enthalten. Ich habe auch schon encoding ANSII probiert aber dann geht garnichts.
Mitglied: 129813
129813 Aug 04, 2016 updated at 08:23:15 (UTC)
Goto Top
Then your file has no BOM better convert it to a usable format. And update your powershell if it's old.

Here this works without problems. Your CSV is the problem!!