Wie ändere ich das Datumsformat in mehreren Textdateien in Powershell?

2

Hallo, ich habe ungefähr 5000 Textdateien (TXT) in einem Verzeichnis. Dateien sind durch Kommas getrennt. Ich versuche, das Datumsformat (es wird in der ersten Spalte jeder Datei gespeichert) von M / d / yyyy in MM / dd / yyyy zu ändern. Es gibt ungefähr 1 Million Zeilen in diesen 5000 Dateien, also hoffe ich, dass es einen effizienten Weg gibt. Ich habe irgendwo gelesen, dass ein StreamWriter-Befehl für den Umgang mit einer so großen Anzahl von Daten ein langer Weg ist, aber ich bin mir nicht sicher, ob es kann in meinem Fall verwendet werden. Vielen Dank für jeden Vorschlag.

Ich verwende dieses Skript zum Löschen der zweiten und letzten Zeile mehrerer Textdateien mit StreamWriter. Es ist sehr schnell und effizient. Ich hoffe, dass es mit einigen kleinen Modifikationen zum Ändern von Datumsformaten in der ersten Spalte verwendet werden kann. Ich habe nur 2 Wochen Erfahrung mit PS, das ist eine ziemliche Herausforderung für mich.

dir *.txt | %{     
$content = gc $_.FullName
$output = @($content | select -First 1 )
$output += $content[2..($content.count -2)]
$sw = New-Object System.IO.StreamWriter($_.FullName,$false)
$output | %{$sw.WriteLine($_)}
$sw.close()
}
paul
quelle
1
Was haben Sie bisher recherchiert oder versucht? Können Sie Skripte freigeben, mit denen Sie gearbeitet haben?
CharlieRB

Antworten:

0

Sie sagen, Ihre Textdateien sind durch Kommas getrennt. Nun, du könntest es gebrauchen Import-Csv -Path C:\file.txt. Dann macht PowerShell jede Zeile zu einem Objekt. Objekte sind einfacher und genauer zu manipulieren als Text. Objekte mögen "langsamer" sein, aber 5000 Dateien / 1M Zeilen sind nichts, selbst für einen billigen Laptop. Ich bin mir nicht sicher, wie PS mit der ersten und letzten Zeile deiner Dateien umgehen würde, da ich das Format nicht kenne.

Das Konvertieren der Daten ist einfach. Wenn ich gebe Get-Date Ich verwende eine Datumszeichenfolge im Format M / T / JJJJ -UFormat Parameter, um das Datum zu formatieren, wie ich will. Get-Help Get-Date -Full

PS> Get-Date 2/8/2016 -UFormat "%m/%d/%Y"
02/08/2016
E.V.I.L.
quelle