Viele CSV-Dateien per Batch in ANSI konvertieren
Hallo zusammen,
ich habe in zahllosen Unterordnern mehrere Millionen CSV-Dateien im UCS-2 LE BOM-Format und muss diese in das ANSI-Format konvertieren.
Es sind immer 12 Dateien in einem Verzeichnis, die immer gleich heißen.
Weil's manuell nicht geht, muss das per Batch-Datei und ich habe schon mal damit begonnen, die CSV-Dateien wie folgt zu konvertieren:
Allerdings habe ich 2 Probleme:
1. Die neuen Dateien haben die Endung "_ANSI.csv", ich würde aber lieber die alten Dateien überschreiben.
2. Eine der 12 Dateien in den Verzeichnissen mit einem Dateinamen von 21 Zeichen wird jeweils nicht mit konvertiert. Vermutlich ist der Dateiname zu lang.
Jemand eine Idee?
Für Hilfe bin ich schonmal im Voraus dankbar! ;)
Viele Grüße
ich habe in zahllosen Unterordnern mehrere Millionen CSV-Dateien im UCS-2 LE BOM-Format und muss diese in das ANSI-Format konvertieren.
Es sind immer 12 Dateien in einem Verzeichnis, die immer gleich heißen.
Weil's manuell nicht geht, muss das per Batch-Datei und ich habe schon mal damit begonnen, die CSV-Dateien wie folgt zu konvertieren:
@echo off
dir *.csv /b /s > fileslist.txt
for /f "tokens=*" %%a in (fileslist.txt) do powershell -Executionpolicy ByPass -Command "gc '%%a' | set-content '%%a_ANSI.csv' -Encoding Default"
Allerdings habe ich 2 Probleme:
1. Die neuen Dateien haben die Endung "_ANSI.csv", ich würde aber lieber die alten Dateien überschreiben.
2. Eine der 12 Dateien in den Verzeichnissen mit einem Dateinamen von 21 Zeichen wird jeweils nicht mit konvertiert. Vermutlich ist der Dateiname zu lang.
Jemand eine Idee?
Für Hilfe bin ich schonmal im Voraus dankbar! ;)
Viele Grüße
Please also mark the comments that contributed to the solution of the article
Content-Key: 575552
Url: https://administrator.de/contentid/575552
Printed on: April 26, 2024 at 06:04 o'clock
9 Comments
Latest comment
for /f "tokens=*" %%a in (fileslist.txt) do powershell
Aua nee, für jede Datei eine extra eine neue PS Session auf zu machen, da wächst dir ein 300 Meter Bart bis das feddich is , dann doch lieber gleich die Schleife in die PS verlegen.Würd ich bei der Menge zwar mit inconv machen (um Jahre schneller), aber naja die Winblows-Knechte sind ja meistens nicht zu belehren
powershell -EP ByPass -C "gci '.\*.csv' -File -Recurse | %%{(gc $_.FullName -ReadCount 1000) | sc $_.FullName -Encoding Default}"
Is sie doch schon .
Machs besser gleich mit "iconv", ist besser für die nerven und spart obendrein wie gesagt jede Menge Zeit und ist zuverlässiger. Du willst ja nicht hinterher noch in Millionen Dateien manuell rein schauen oder?
Manche Dateien konvertiert er jetzt in ANSI und manche in UTF-8...?
Es gilt was für [System.Text.Encoding]::Default im OS definiert ist ...Machs besser gleich mit "iconv", ist besser für die nerven und spart obendrein wie gesagt jede Menge Zeit und ist zuverlässiger. Du willst ja nicht hinterher noch in Millionen Dateien manuell rein schauen oder?
Einfach n -Verbose hinten dran pappen ... oder per write-host ausgeben lassen.
https://dbaportal.eu/2012/10/24/iconv-for-windows/
usw...
powershell -EP ByPass -C "gci '.\*.csv' -File -Recurse | %%{(gc $_.FullName -ReadCount 1000) | sc $_.FullName -Encoding Default -verbose}"
Hab da mit echo was ergänzt, das hat nicht funktioniert...
Nicht dumm rum probieren ==> RTFM!Hm, ja, aber "iconv" läuft nur unter Linux, nix Windows, oder so wie ich das sehe...
Quatsch mit Soße, läuft auch unter Winblows.https://dbaportal.eu/2012/10/24/iconv-for-windows/
usw...
Aber mit der Zeit in nem Forum rum eiern geht offensichtlich
Das wird kein Einzeiler werden, oder?
Wieso nicht ?find /your/path -type f -name '*.csv' -exec iconv -f UCS-2LE -t cp1252 "{}" -o "{}" \;
ab grad nochmal geschaut, es sind über 21 Mio. Dateien...
Na dann viel Spaß noch, back erst mal ein paar kleinere Brötchen... i'm out