Batchdatei oder Befehlszeile zum Entfernen von Kopfzeilen aus Textdateien

Batchdatei oder Befehlszeile zum Entfernen von Kopfzeilen aus Textdateien

Ich versuche, die ersten 3 Zeilen aus 10.000 Textdateien zu entfernen. Mit:

for %f in (*.txt) do more +3 “%f” >> output.txt

Ich kann die Header entfernen und alle Dateien im Ordner zu einer neuen Datei zusammenfügen. Ich möchte die Dateien jedoch getrennt halten, nur ohne die Headerzeilen. Ist das möglich?

Antwort1

Sie können Quelldateien nicht überschreiben. Und Sie können aufgrund möglicher Überschneidungen keinen neuen Namen automatisch generieren. Sie können die Datei jedoch ohne Header in einem temporären Ordner speichern und dann über die Quelle verschieben. Das Ergebnis wird ungefähr so ​​aussehen:

@echo off
for %%f in (*.txt) do (
    more +3 "%%f" > "%TEMP%\%%f"
    move /y "%TEMP%\%%f" "%%f" > nul
)
echo Done.

Oder dasselbe wie ein Befehl in der Befehlszeile:

@for %f in (*.txt) do @(more +3 "%f" > "%TEMP%\%f" && move /y "%TEMP%\%f" "%f" > nul)

Antwort2

Wenn Ihre Umgebung dies zulässt, sollten Sie die Verwendung von Powershell in Betracht ziehen, sodass Sie keine temporären Dateien und Ordner verwenden müssen.

Foreach ($file in Get-ChildItem -Path ".\" -Filter *.txt ) {
    $content = Get-Content $file.FullName | Select-Object -Skip 3;
    Set-Content -Path $file.FullName -Value $content;
}

Antwort3

Erstellen Sie einfach separate Dateien in einem anderen Verzeichnis.

md sub
for %f in (*.txt) do more +3 “%f” > sub\%f

verwandte Informationen