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()
}
źródło
Odpowiedzi:
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-Date
ciąg daty sformatowany jak m / d / rrrr, używam tego-UFormat
parametru, aby sformatować datę w dowolny sposób.Get-Help Get-Date -Full
źródło