Per Batch erste Zeile aus CSV Dateien löschen
Hallo zusammen!
Ich suche ein Batch Script, mit dem ich aus sämtlichen CSV Dateien in einem Unterordner die erste Zeile entfernen kann.
Das Script liegt also z.B. in C:\Ordner und entfernt aus allen CSV Dateien in C:\Ordner\Unterordner jeweils die erste Zeile und überschreibt diese dann einfach wieder.
Wäre super, wenn mir dabei jemand behilflich sein könnte.
Lieben Gruß
One
Ich suche ein Batch Script, mit dem ich aus sämtlichen CSV Dateien in einem Unterordner die erste Zeile entfernen kann.
Das Script liegt also z.B. in C:\Ordner und entfernt aus allen CSV Dateien in C:\Ordner\Unterordner jeweils die erste Zeile und überschreibt diese dann einfach wieder.
Wäre super, wenn mir dabei jemand behilflich sein könnte.
Lieben Gruß
One
15 Antworten
- LÖSUNG sirOne schreibt am 17.02.2016 um 12:53:06 Uhr
- LÖSUNG Biber schreibt am 17.02.2016 um 13:55:34 Uhr
- LÖSUNG 114757 schreibt am 17.02.2016 um 14:02:25 Uhr
- LÖSUNG sirOne schreibt am 17.02.2016 um 14:04:28 Uhr
- LÖSUNG Biber schreibt am 17.02.2016 um 13:55:34 Uhr
- LÖSUNG TlBERlUS schreibt am 17.02.2016 um 13:07:44 Uhr
- LÖSUNG sirOne schreibt am 17.02.2016 um 13:22:55 Uhr
- LÖSUNG 126919 schreibt am 17.02.2016 um 13:25:49 Uhr
- LÖSUNG sirOne schreibt am 17.02.2016 um 13:43:51 Uhr
- LÖSUNG 126919 schreibt am 17.02.2016 um 13:25:49 Uhr
- LÖSUNG 126919 schreibt am 17.02.2016 um 13:23:05 Uhr
- LÖSUNG miniversum schreibt am 18.02.2016 um 11:14:33 Uhr
- LÖSUNG TlBERlUS schreibt am 18.02.2016 um 13:32:45 Uhr
- LÖSUNG 114757 schreibt am 18.02.2016 um 17:29:37 Uhr
- LÖSUNG miniversum schreibt am 18.02.2016 um 20:10:37 Uhr
- LÖSUNG TlBERlUS schreibt am 19.02.2016 um 08:45:19 Uhr
- LÖSUNG miniversum schreibt am 19.02.2016 um 17:52:01 Uhr
- LÖSUNG TlBERlUS schreibt am 19.02.2016 um 08:45:19 Uhr
- LÖSUNG miniversum schreibt am 18.02.2016 um 20:10:37 Uhr
- LÖSUNG sirOne schreibt am 17.02.2016 um 13:22:55 Uhr
LÖSUNG 17.02.2016 um 12:53 Uhr
@echo off
for %%a in ("C:\Ordner\Unterordner\*.csv") DO (
more /e +1 "%%a">"%%a.tmp"
del "%%a" && ren "%%a.tmp" "%%a"
)
Diese Lösung habe ich hier im Forum gefunden, allerdings erhalte ich einen Syntaxfehler und finde nicht heraus warum (-:
LÖSUNG 17.02.2016 um 13:07 Uhr
Hi,
nimm Powershell; Batch ist veraltet.
nimm Powershell; Batch ist veraltet.
clear-host
$path = "C:\test"
$file = gci -Recurse $path | ?{$_.Extension -eq ".csv"}
Foreach ($f in $file){
$filepath = $f.DirectoryName
$content = gc $filepath\$f
$content = $content[1..($content.Length -1)]
$content | Set-Content $filepath\$f
}
LÖSUNG 17.02.2016 um 13:22 Uhr
Hallo TlBERlUS,
vielen Dank für die Antwort! Da ich mich damit leider noch gar nicht auskenne und die batch Scripte wenigstens halbwegs verstehe wäre mir die Lösung schon lieber.
Ich wüsste gar nicht was ich mit deinem Code jetzt anfangen müsste (-:
vielen Dank für die Antwort! Da ich mich damit leider noch gar nicht auskenne und die batch Scripte wenigstens halbwegs verstehe wäre mir die Lösung schon lieber.
Ich wüsste gar nicht was ich mit deinem Code jetzt anfangen müsste (-:
LÖSUNG 17.02.2016, aktualisiert um 13:23 Uhr
nimm Powershell; Batch ist veraltet.
Was sich dann aber auch auf eine Zeile abkürzen lässt gci 'c:\Ordner\*.csv' -recurse | %{(gc $_.Fullname) | select -skip 1 | set-content $_.Fullname}
LÖSUNG 17.02.2016, aktualisiert um 13:35 Uhr
Das obige für eine Batch:
@echo off
powershell -Executionpolicy Bypass -Command "gci 'c:\Ordner\Unterordner\*.csv' -recurse | %%{(gc $_.Fullname) | select -skip 1 | set-content $_.Fullname}"
LÖSUNG 17.02.2016 um 13:43 Uhr
Ohne jetzt vermessen sein zu wollen, würde ich mich doch freuen falls mir jemand sagen könnte wieso das oben gepostete batch script nicht funktioniert. Es scheint alles zu gehen, bis auf die Umbenennen von %%a.tmp in %%a.
Dort könnte ich dann die Ordnernamen noch durch Variablen verändern etc.
Nebenbei bekomme ich das Script in Powershell auch noch nicht zum Laufen...
Dort könnte ich dann die Ordnernamen noch durch Variablen verändern etc.
Nebenbei bekomme ich das Script in Powershell auch noch nicht zum Laufen...
LÖSUNG 17.02.2016, aktualisiert um 15:31 Uhr
Moin sirOne,
auch ich rate zum Umstieg auf Powershell, wenn ihr es im Unternehmen einsetzen dürft.
Der Vollständigkeit halber zu den Syntaxfehlern beim obigen CMD-Batch-Schnipsel:
- Zeile 03: der Schalter /e beim more ist überflüssig, verursacht aber keinen Fehler.
- Zeile 04: der zweite Teil Ren "%%a.tmp" "%%a" wird übersetzt zu Ren "C:\x\y\test1.csv.tmp" "C:\x\y\test1.csv"
Das verursacht den Fehler, denn der renameTo-Name beim REN darf keine Pfadangabe enthalten.
Ändere also, falls du den CMD-Batch verwendest, die Zeile 04 auf
del "%%a" && ren "%%a.tmp" "%%~na"
(ungetestet, nur biooptische Grobdiagnose)
Grüße
Biber
[Edit] Upps, gerade hast du danach gefragt, da war ich am tippseln...[/Edit]
auch ich rate zum Umstieg auf Powershell, wenn ihr es im Unternehmen einsetzen dürft.
Der Vollständigkeit halber zu den Syntaxfehlern beim obigen CMD-Batch-Schnipsel:
- Zeile 03: der Schalter /e beim more ist überflüssig, verursacht aber keinen Fehler.
- Zeile 04: der zweite Teil Ren "%%a.tmp" "%%a" wird übersetzt zu Ren "C:\x\y\test1.csv.tmp" "C:\x\y\test1.csv"
Das verursacht den Fehler, denn der renameTo-Name beim REN darf keine Pfadangabe enthalten.
Ändere also, falls du den CMD-Batch verwendest, die Zeile 04 auf
del "%%a" && ren "%%a.tmp" "%%~na"
(ungetestet, nur biooptische Grobdiagnose)
Grüße
Biber
[Edit] Upps, gerade hast du danach gefragt, da war ich am tippseln...[/Edit]
LÖSUNG 17.02.2016, aktualisiert um 15:31 Uhr
LÖSUNG 17.02.2016, aktualisiert um 14:05 Uhr
Vielen Dank Biber,
Unternehmen kann man sowieso nicht wirklich sagen (-:
Ich habe deinen Vorschlag jetzt geändert auf
da in deiner Version keine Dateiendung mehr enthalten war. Damit funktioniert es aber jetzt! Danke an alle (-:
Edit: Und da kam noch die "richtige" Lösung für die Dateiendung, auch dafür danke! (-:
Unternehmen kann man sowieso nicht wirklich sagen (-:
Ich habe deinen Vorschlag jetzt geändert auf
del "%%a" && ren "%%a.tmp" "%%~na.csv"
da in deiner Version keine Dateiendung mehr enthalten war. Damit funktioniert es aber jetzt! Danke an alle (-:
Edit: Und da kam noch die "richtige" Lösung für die Dateiendung, auch dafür danke! (-:
LÖSUNG 18.02.2016, aktualisiert um 11:15 Uhr
OT:
Aber es läuft auf allen (Windows) Systemen.
Hier zumindest ist Powershell auf den meisten Rechnern nicht vorhanden.
Gerade bei so Sachen wie das hier kommen mit Lösungen in Powershell oft länger und/oder überdimensioniert vor (z.B. nutze Ich doch nicht Powershell nur um eine Datei umzubenennen).
Das ist so mein persönlicher Eindruck.
LÖSUNG 18.02.2016 um 13:32 Uhr
Richtig, aber in nahezu allen Netzwerken sollte man mittlerweile Systeme verwenden, die Powershell installiert haben (IMHO)

Gerade bei so Sachen wie das hier kommen mit Lösungen in Powershell oft länger und/oder überdimensioniert vor (z.B. nutze Ich doch nicht Powershell nur um eine Datei umzubenennen).
warum nicht, die Befehle die du in eine Batch setzt, kannst du in nahezu allen Fällen auch in Powershell verwenden. Hinzu kommt, dass Powershell einfacher zu schreiben/verstehen ist. Außerdem übt das, wenn man die Powershell irgendwann doch brauchen sollte.Das ist so mein persönlicher Eindruck.
Geht mir ähnlich LÖSUNG 18.02.2016, aktualisiert um 17:33 Uhr
Zitat von @miniversum:
Aber es läuft auf allen (Windows) Systemen.
Hier zumindest ist Powershell auf den meisten Rechnern nicht vorhanden.
Du verwendest noch Systeme älter als Vista X)?? Denn ab Vista ist es von Haus aus mit dabei.Aber es läuft auf allen (Windows) Systemen.
Hier zumindest ist Powershell auf den meisten Rechnern nicht vorhanden.
Selbst XP lässt sich damit nachrüsten.
Gerade bei so Sachen wie das hier kommen mit Lösungen in Powershell oft länger und/oder überdimensioniert vor (z.B. nutze Ich doch nicht Powershell nur um eine Datei umzubenennen).
Was soll hier im Thread nur umbenannt werden? Mit der Powershell geht alles endlich in the box ohne dauernd mit Umwegen und Zusatztools hantieren zu müssen, denn mit dem NET-Framework steht einem eine komplette Programmiersprache zur Verfügung (c#-Code kompilieren und ausführen kein Problem, GUI kein Problem, etc. pp).Wer nur auf Batch setzt hat in kommenden Windows Versionen verloren.
Nur wer noch keinen Kontakt mit der Powershell hatte meidet sie, ist wie immer... Wen einmal das PS-Fieber gepackt hat, der will keine Batch-Krücken mehr sehen.
Gruß jodel32
LÖSUNG 18.02.2016 um 20:10 Uhr
Ich habe nicht gesagt das es alte Windows Versionen sind. Ich sagte nur das es nicht vorhanden ist; absichtlich. Wir haben hier Rechner mit Mess- und Testsystemen. Da fahren wir eher die Politik nur das nötigste zu installieren. Deshalb haben wir auch Windows 8.1 ohne Powershell.
Das mit dem umbenennen wurde oben nicht erwähnt. Es war nur ein Beispiel einer einfachen Aufgabe für die ich Powershell zu überdimensioniert finde. Für andere Aufgaben die komplexer sind ist natürlich Powershell geeignetter oder VBS oder Python oder gleich ein Programm in C++.
Man wählt die Sprache nach den Bedürfnissen und nicht weil sie halt grade da ist.
Das mit dem umbenennen wurde oben nicht erwähnt. Es war nur ein Beispiel einer einfachen Aufgabe für die ich Powershell zu überdimensioniert finde. Für andere Aufgaben die komplexer sind ist natürlich Powershell geeignetter oder VBS oder Python oder gleich ein Programm in C++.
Man wählt die Sprache nach den Bedürfnissen und nicht weil sie halt grade da ist.
LÖSUNG 19.02.2016 um 08:45 Uhr
Es gibt Win 8.1 ohne Powershell?
LÖSUNG 19.02.2016 um 17:52 Uhr
Man kann ja auch bei windows 8 teile entfernen.