Ändern des DateTime-Formats in mehreren CSV-Dateien

Ändern des DateTime-Formats in mehreren CSV-Dateien

Ich habe mehrere CSV-Dateien mit dieser Struktur:

text, text, 01/27/2001 01:00:00 PM

Ich muss ALLE CSV-Dateien mit diesem Datums-/Uhrzeitformat aktualisieren:

text, text, 27-Jan-2001 13:00:00

Gibt es eine bekannte intelligente/schnelle Möglichkeit, dies zu tun? Ich habe versucht, sie in Excel zu importieren, aber das ist eine individuelle Aufgabe [einzeln kopieren/einfügen], also nehme ich an, dass dies nicht die beste Vorgehensweise ist. Vielleicht eine Funktion in Notepadd++ [konnte sie nicht finden]

Danke,

Antwort1

Hier ist ein PowerShell-Skript, um mehrere CSV-Dateien aus einem bestimmten Ordner in einem Schritt zu aktualisieren.

ForEach ($file in Get-ChildItem "C:\myFolder" -filter "*.csv"){         
    Get-Content $file.Fullname | ForEach { 
        $arLine = $_ -split ","
        $date = [DateTime]$arLine[2]
        $arLine[2] = $date.ToString(" dd-MMM-yyyy HH:mm:ss")    
        [array]$arFile += $arLine -join ","
        } 
    $arFile | Out-File $file.Fullname
    clear-variable arFile           
    }

Was es macht

  1. Durchlaufen Sie jede Datei in einem bestimmten Ordner und filtern Sie nur nach CSV-Dateien
  2. Lesen Sie jede CSV-Datei ein und durchlaufen Sie jede Zeile.
  3. Teilen Sie jede Zeile in ein Array auf. Das Komma ist unser Trennzeichen
  4. Konvertieren Sie die Datumszeichenfolge beispielsweise 01/27/2001 01:00:00 PMin ein PowerShell-Datumsobjekt.
  5. Formatiere das Datumsobjekt und schreibe es zurück in das Array. [2]steht für den dritten Wert/Spalte, da wir bei Null anfangen zu zählen
  6. Fügen Sie alle Werte der aktuellen Zeile wieder zusammen, um eine einzelne Zeichenfolge zu erhalten. Verwenden Sie Kommas als Trennzeichen.
  7. Fügen Sie alle Zeilen zu einem einzigen Array hinzu, damit wir sie alle auf einmal in eine Datei schreiben können
  8. Mit der nächsten CSV-Datei fortfahren

Antwort2

Am schnellsten geht es, wenn Sie in VBA Excel ein Makro schreiben, das die CSV-Dateien öffnet, die Formatierung ändert und sie anschließend wieder als CSV-Datei speichert. Versuchen Sie dazu folgende Vorgehensweise:

  • Aufzeichnen eines Makros in Exceldas genau diese Aufgabe übernimmt füreinscsv-Datei (Aufnahme starten, Datei öffnen, formatieren und Datei erneut speichern).
  • Verwendendiese Antwort von SUum alle Dateien in einem Verzeichnis zu durchsuchen, um die soeben erstellte Aufgabe auszuführen. Sie benötigen dieDir-Funktionund eine While-Schleife.

Ihr Code sieht also folgendermaßen aus (nicht getestet!):

Public Sub ChangeDates()
    Dim StrFile as String

    strFile = Dir("C:\Some\Location\Of\Your\Files\*.csv")
    While strFile <> ""
        # Append the stuff from the recorded macro here and adjust the filename
        # Probably something like:
        Workbooks.Open Filename:=strFile
        Columns("C:C").Select
        Selection.NumberFormat = "dd-mm-yyyy HH:mm:ss"  # or something else
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        strFile = Dir
    End While
End Sub

verwandte Informationen