Batch um erste Zeile einer CSV zu löschen
Hallo,
im Rahmen meiner Masterarbeit muss ich eine Vielzahl von csv Dateien untersuchen. Hierbei muss ich einige dieser Dateien zusammenfügen, wobei ich jedoch vorher von einigen Dateien die erste Zeile (Überschrift der Tabelle) löschen muss. Da es sich hier um csv Dateien handelt, die eine Größe zwischen 3 und 8 GB haben, ist es sehr schwer und vor allem dauert es sehr lange diese im Editor zu öffen und die Zeile manuell zu löschen und anschließend wieder abzuspeichern.
Gibt es eine Möglichkeit eine Batch zu erstellen, welche genau das Löschen der ersten Zeile erledigt? Am besten wäre, dass die Batch auch alle Dateien, bei denen das gemacht werden muss, bearbeitet. So könnte ich das Programm einfach mal über Nacht durchlaufen lassen.
Da ich mich echt schlecht mit solchen Dingen auskenne, wäre es wirklich hilfreich und nett, wenn die Antworten detailliert erklärt sind und ich das als Laie auch nachvollziehen und machen kann.
Vielen Dank im Voraus!!!!
Viele Grüße
Chris
im Rahmen meiner Masterarbeit muss ich eine Vielzahl von csv Dateien untersuchen. Hierbei muss ich einige dieser Dateien zusammenfügen, wobei ich jedoch vorher von einigen Dateien die erste Zeile (Überschrift der Tabelle) löschen muss. Da es sich hier um csv Dateien handelt, die eine Größe zwischen 3 und 8 GB haben, ist es sehr schwer und vor allem dauert es sehr lange diese im Editor zu öffen und die Zeile manuell zu löschen und anschließend wieder abzuspeichern.
Gibt es eine Möglichkeit eine Batch zu erstellen, welche genau das Löschen der ersten Zeile erledigt? Am besten wäre, dass die Batch auch alle Dateien, bei denen das gemacht werden muss, bearbeitet. So könnte ich das Programm einfach mal über Nacht durchlaufen lassen.
Da ich mich echt schlecht mit solchen Dingen auskenne, wäre es wirklich hilfreich und nett, wenn die Antworten detailliert erklärt sind und ich das als Laie auch nachvollziehen und machen kann.
Vielen Dank im Voraus!!!!
Viele Grüße
Chris
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294504
Url: https://administrator.de/forum/batch-um-erste-zeile-einer-csv-zu-loeschen-294504.html
Ausgedruckt am: 20.05.2025 um 07:05 Uhr
6 Kommentare
Neuester Kommentar

Moin,
Batch (ob die Batch mir solchen Dateigrößen klarkommt, keine Ahnung, probiers aus ... Wer um alles in der Welt produziert solch große CSV Files ??),
Powershell:
Gruß jodel32
Batch (ob die Batch mir solchen Dateigrößen klarkommt, keine Ahnung, probiers aus ... Wer um alles in der Welt produziert solch große CSV Files ??),
@echo off
for %%a in ("C:\ordner\*.csv") DO (
more /e +1 "%%a">"%%a.tmp"
del "%%a" && ren "%%a.tmp" "%%a"
)
gci 'C:\Ordner\*.csv' | %{
gc $_.Fullname | select -skip 1 | out-file "$($_.FullName).tmp"
remove-item $_.FullName -Force; rename-item -Path "$($_.FullName).tmp" -NewName $_.FullName
}

Mit der Batch funktioniert es leider nicht. Es bricht bei Zeile 65.535 ab
Wird dann wohl ein Limit der Batch bzw. vom more Befehl sein.Muss ich denn für " _.Fullname" irgend einen Namen einfügen
Nein, nur oben den Ordner wo die CSV-Dateien liegen musst du anpassen sonst nichts!weil irgendwie funktioniert das nicht.
Doch das tut es! Funktioniert hier wie immer einwandfrei, mach das ja schon ewig...Wahrscheinlich hast du die Executionpolicy noch nicht freigeschaltet.
Aber "funktioniert nicht" ist in einem Admin-Forum keine Fehlemeldung, sorry !
Vielleicht hast du ja auch eine ganz andere Lösung für mich?!
Noch mehr?? Gar keine Ansprüche was ...ich könnte dir jetzt hier das ganze noch in 10 Weiteren Programmiersprachen Posten, aber wozu wenn es die Powershell ja erledigt...

Zitat von @chris1987.1:
Es hat geklappt !!! Vielen vielen Dank nochmals. Nur eine kliene Sache noch. Mir ist aufgefallen, dass die Datei jetzt genau doppelt so groß ist wie vorher. Ich hab irgendwo nachgelesen, dass das mit der Codierung zusammenhängt. Gibt es eine Lösung um dies zu umgehen?
Ja das liegt an der Codierung, die PS verwendet hier Uniode und das braucht natürlich doppelt so viel Platz pro Charakter, das kannst du aber an die Kodierung deiner Dateien anpassen in den du folgende Zeile so schreibst, den Code hängst du am Ende an, für pure ASCII Files soEs hat geklappt !!! Vielen vielen Dank nochmals. Nur eine kliene Sache noch. Mir ist aufgefallen, dass die Datei jetzt genau doppelt so groß ist wie vorher. Ich hab irgendwo nachgelesen, dass das mit der Codierung zusammenhängt. Gibt es eine Lösung um dies zu umgehen?
gc $_.Fullname | select -skip 1 | set-Content "$($_.FullName).tmp" -Encoding ASCII