Benutzer mit den meisten Antworten
Datum in einer Textdatei um einen Tag zurücksetzen

Frage
-
Hallo,
vielleicht könnt Ihr mir helfen? Ich habe eine Textdatei mit diversen Daten... Hier zwei Beispielzeile:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"21.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"10.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Nun muss Spalte 14 jeweils um einen Tag reduziert werden. Die Ausgabe soll dann so aussehen:
:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"20.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"09.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Bisher habe ich das immer mit Excel gemacht. Ich würde das aber gerne automatisch mit Hilfe eines Skriptes als Task laufen lassen. Jemand eine Idee?
Viele Grüße
Antworten
-
Hallo,
vielleicht könnt Ihr mir helfen? Ich habe eine Textdatei mit diversen Daten... Hier zwei Beispielzeile:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"21.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"10.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Nun muss Spalte 14 jeweils um einen Tag reduziert werden. Die Ausgabe soll dann so aussehen:
:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"20.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"09.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Bisher habe ich das immer mit Excel gemacht. Ich würde das aber gerne automatisch mit Hilfe eines Skriptes als Task laufen lassen. Jemand eine Idee?
Viele Grüße
Klar. Einfach machen ;-)
Es ist 'ne CSV-Datei, die kannst Du als solche mit Import-CSV einlesen, mit foreach-Schleife durchgehen, Datum in Datum umwandeln, einen Tag abziehen (.AddDays(-1) ), zurück in einen String wandeln und dann den ganzen Spaß wieder rausschreiben. Wenn Du die Anführungszeichen zwingend brauchst, musst Du halt ein bißchen tricksen.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:10
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 4. April 2017 13:20
-
Na wenn das nicht eine perfekte Gelegenheit ist, sich die Fähigkeiten anzueignen, dann weiß ich ja auch nicht ... hier wäre so ein Anfang: Getting Started with Microsoft Powershell ;-)
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:10
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 4. April 2017 13:20
Alle Antworten
-
Hallo,
vielleicht könnt Ihr mir helfen? Ich habe eine Textdatei mit diversen Daten... Hier zwei Beispielzeile:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"21.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"10.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Nun muss Spalte 14 jeweils um einen Tag reduziert werden. Die Ausgabe soll dann so aussehen:
:[ZEITENKAL]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"20.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1[ZEITENKAL]";"INSERT";"20170228";"";"";"";"1310";"";"1580";"Muster";"Klaus";"1";"10.11.2016";"09.11.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1
Bisher habe ich das immer mit Excel gemacht. Ich würde das aber gerne automatisch mit Hilfe eines Skriptes als Task laufen lassen. Jemand eine Idee?
Viele Grüße
Klar. Einfach machen ;-)
Es ist 'ne CSV-Datei, die kannst Du als solche mit Import-CSV einlesen, mit foreach-Schleife durchgehen, Datum in Datum umwandeln, einen Tag abziehen (.AddDays(-1) ), zurück in einen String wandeln und dann den ganzen Spaß wieder rausschreiben. Wenn Du die Anführungszeichen zwingend brauchst, musst Du halt ein bißchen tricksen.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:10
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 4. April 2017 13:20
-
Na wenn das nicht eine perfekte Gelegenheit ist, sich die Fähigkeiten anzueignen, dann weiß ich ja auch nicht ... hier wäre so ein Anfang: Getting Started with Microsoft Powershell ;-)
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:10
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 4. April 2017 13:20
-
Na wenn das nicht eine perfekte Gelegenheit ist, sich die Fähigkeiten anzueignen, dann weiß ich ja auch nicht ... hier wäre so ein Anfang: Getting Started with Microsoft Powershell ;-)
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''
So isses. Vor 11 Jahren hatte noch keiner PowerShell Erfahrung :-)Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert lucedeciello Montag, 27. März 2017 13:01
- Tag als Antwort aufgehoben lucedeciello Montag, 27. März 2017 13:01
-
Ich versteh schon... von nichts kommt nichts. Habe den Import via Import-CSV auch schon gemeistert...aber wie gebe ich nun die genaue Position an, an der das Datum geändert werden soll?
Mein größtes Problem ist gerade, das meine Datei keinen Header hat.... falls jemand versteht was ich meine? -
Ich versteh schon... von nichts kommt nichts. Habe den Import via Import-CSV auch schon gemeistert...aber wie gebe ich nun die genaue Position an, an der das Datum geändert werden soll?
Mein größtes Problem ist gerade, das meine Datei keinen Header hat.... falls jemand versteht was ich meine?Aber sicher. Schau mal hier:
$a = @("a,b,c","d,e,f") $b = "f1,f2,f3" $c = @($b) + $a $c | ConvertFrom-Csv
So kannst Du den Header anfügen. $a wäre in Deinem Fall das Ergebnis von Get-Content.Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com -
Glaube mir, es nützt nichts, wenn du dir jetzt hier die Antwort Häppchenweise erbittest. Du scheiterst dann unweigerlich bei der ersten kleinen Anpassung.
Du wirst wohl nicht umhin kommen erstmal ein paar Grundlagen zu lernen. Schau mal hier: LINK
Wenn du das hast, gibt es zum Thema CSV-Edit mit Powershell quasi unzählige Beispiele im Netz: LINK
Und wenn du dann dazu Fragen oder Probleme damit hast, kannst du hier gern wieder Fragen.
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Code Manager v5: Link
(u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:11
- Nicht als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 30. März 2017 10:11
-
:[ZEITENKAL1]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"19.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
:[ZEITENKAL2]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"18.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
:[ZEITENKAL3]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"17.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
:[ZEITENKAL4]";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"16.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"$ximport = Import-Csv -Path c:\temp\test.csv -Delimiter ";" -Header a,b,c,d,e,f,g,h,i,j,k,l,xdatum,n,o,p,q,r,s,t,u,v,w,x,y,z,aa foreach($zeile in $ximport) { $zeile.xdatum = (get-date($zeile.xdatum)).AddDays(-1).ToString("dd.MM.yyyy") $zeile |convertto-csv -Delimiter ";" -NoTypeInformation | select -Skip 1 | out-file c:\temp\test2.csv -Append }
":[ZEITENKAL1]""";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"18.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
":[ZEITENKAL2]""";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"17.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
":[ZEITENKAL3]""";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"16.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
":[ZEITENKAL4]""";"INSERT";"20170228";";";"";"1310";"";"1580";"Muster";"Klaus";"1";"17.10.2016";"15.10.2016";"";"";"";"";"_K";"I";"";"";"";"";"";"";"";"1"
"Chris
- Als Antwort vorgeschlagen -- Chris -- Dienstag, 4. April 2017 13:21