CSV per Batch umformatieren
Guten Abend,
ich muss diverse csv Dateien die alle gleich aufgebaut sind umformatieren.
Da es händisch eine wahnsinnige Arbeit wäre, würde ich dies gerne per Batch Datei erledigen.
Die CSV ist folgendermaßen aufgebaut:
in der ersten Zeile steht Text der automatisch entfernt werden soll.
dafür habe ich die erste Bat:
danach soll die letzte Zeile entfernt werden
dafür die zweite Bat:
anschließend kommen Zeilen die folgendermaßen aussehen:
07/13/18,332.25,332.5,330.25,330.25,-6.25,272,0
davon möchte ich den Wert nach dem ersten, zweiten, dritten und fünften Komma und das dazugehörige Komma löschen.
dafür die dritte Bat:
Anschließend soll ganz hinten noch ein Komma und die ersten beiden Buchstaben des Dateinamens der CSV eingefügt werden dahinter die Zahlen die an der vierten und fünften Stelle des Dateinamens stehen und zu guter letzt der Buchstabe als Großbuchstabe (falls das möglich ist)der als drittes (als Kleinbuchstabe) im Dateiname steht.
Angenommen der Dateiname lautet abc01jhggtgnj.csv soll also nachher dastehen 07/13/18,330.25,272,0,ab01C
Dafür habe ich leider trotz Google keine sinnvolle Methode gefunden.
Kann mir da jemand von Euch helfen?
Logischerweiße müssen es nicht 4 Bats sein ich schaff es nur nicht alle zusammenzufügen zu einer die funktioniert.
Vielen Dank im voraus.
ich muss diverse csv Dateien die alle gleich aufgebaut sind umformatieren.
Da es händisch eine wahnsinnige Arbeit wäre, würde ich dies gerne per Batch Datei erledigen.
Die CSV ist folgendermaßen aufgebaut:
in der ersten Zeile steht Text der automatisch entfernt werden soll.
dafür habe ich die erste Bat:
@echo off
for /f "delims=" %%i in ('dir /a-d /b /on "*.csv"') do (
more /e +1 "%%i">"%%i.tmp"
del "%%i" && ren "%%i.tmp" "%%i"
)
exit /b
danach soll die letzte Zeile entfernt werden
dafür die zweite Bat:
@echo off
setlocal enabledelayedexpansion
for %%a in (*.csv) do (
find /v "Dow" < %%a >> %%~Na_.csv
)
anschließend kommen Zeilen die folgendermaßen aussehen:
07/13/18,332.25,332.5,330.25,330.25,-6.25,272,0
davon möchte ich den Wert nach dem ersten, zweiten, dritten und fünften Komma und das dazugehörige Komma löschen.
dafür die dritte Bat:
@Echo off
For %%F in (*.csv) do (
(for /f "delims=" %%A in (%%F) do Call :Split %%A
) > "%~dp0%%~nF_fixed.csv"
)
goto :Eof
:Split
Echo(%1,%5,%7,%8
Anschließend soll ganz hinten noch ein Komma und die ersten beiden Buchstaben des Dateinamens der CSV eingefügt werden dahinter die Zahlen die an der vierten und fünften Stelle des Dateinamens stehen und zu guter letzt der Buchstabe als Großbuchstabe (falls das möglich ist)der als drittes (als Kleinbuchstabe) im Dateiname steht.
Angenommen der Dateiname lautet abc01jhggtgnj.csv soll also nachher dastehen 07/13/18,330.25,272,0,ab01C
Dafür habe ich leider trotz Google keine sinnvolle Methode gefunden.
Kann mir da jemand von Euch helfen?
Logischerweiße müssen es nicht 4 Bats sein ich schaff es nur nicht alle zusammenzufügen zu einer die funktioniert.
Vielen Dank im voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 502092
Url: https://administrator.de/contentid/502092
Ausgedruckt am: 23.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
Ich würde einfach Powershell nehmen, um Spalten zu löschen.
Ansonsten würde ich es damit versuchen
lks
Ich würde einfach Powershell nehmen, um Spalten zu löschen.
Ansonsten würde ich es damit versuchen
lks