Jak zmienić format daty w wielu plikach tekstowych w PowerShell?

2

Witaj Mam w jednym katalogu około 5000 plików tekstowych (TXT). Pliki są rozdzielane przecinkami. Próbuję zmienić format daty (jest przechowywany w pierwszej kolumnie każdego pliku) z M / d / rrrr na MM / dd / rrrr. W tych 5000 plikach jest około 1 miliona wierszy, więc mam nadzieję, że istnieje jakiś skuteczny sposób, aby to zrobić. Czytałem gdzieś, że do obsługi tak dużej liczby danych poleceniem StreamWriter jest dobry sposób, ale nie jestem pewien, czy można go użyć w moim przypadku. Dziękuję za wszelkie sugestie.

Używam tego skryptu do usuwania drugiego i ostatniego wiersza wielu plików tekstowych za pomocą StreamWriter. Jest bardzo szybki i wydajny. Mam nadzieję, że przy niewielkich modyfikacjach można go użyć do zmiany formatów dat w pierwszej kolumnie. Mam zaledwie 2 tygodnie doświadczenia z PS, więc jest to dla mnie duże wyzwanie.

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()
}
Paweł
źródło
1
Co do tej pory badałeś lub próbowałeś? Czy możesz udostępnić jakieś skrypty, z którymi pracowałeś?
CharlieRB,

Odpowiedzi:

0

Mówisz, że twoje pliki tekstowe są rozdzielane przecinkami. Cóż, możesz użyć Import-Csv -Path C:\file.txt. Następnie PowerShell przekształca każdy wiersz w obiekt. Obiekty są łatwiejsze / dokładniejsze w obsłudze niż tekst. Obiekty mogą być „wolniejsze”, ale 5000 plików / 1M linii to nic nawet dla taniego laptopa. Nie jestem pewien, jak PS poradzi sobie z pierwszą i ostatnią linią twoich plików, ponieważ nie znam formatu.

Konwersja dat jest łatwa. Jeśli podam Get-Dateciąg daty sformatowany jak m / d / rrrr, używam tego -UFormatparametru, aby sformatować datę w dowolny sposób.Get-Help Get-Date -Full

PS> Get-Date 2/8/2016 -UFormat "%m/%d/%Y"
02/08/2016
ZŁO
źródło