Ich suche verzweifelt nach einem einfachen Beispiel für eine DOS-Batch-Datei, die die erste Zeile von mehreren tausend txt-Dateien löscht und die Datei unter dem ursprünglichen Dateinamen speichert. Im Anschluss an einen Stapelverarbeitungsprozess, der von einem anderen Programm ausgeführt wird, muss ich dann die gelöschte Zeile (eine Textzeichenfolge, die aus "X,Y,Z" besteht) an den Anfang jeder Datei nach der externen Verarbeitung einfügen.
Antworten
Zu viele Anzeigen?Sie können verwenden more +1
um die erste Zeile der Datei zu überspringen. Dann können Sie die Datei in eine temporäre Datei übertragen (Sie können Textdateien nicht an Ort und Stelle bearbeiten):
for %x in (*.txt) do (more +1 "%x">tmp & move /y tmp "%x")
Danach können Sie auf ähnliche Weise die erste Zeile wieder einfügen:
for %x in (*.txt) do ((echo X,Y,Z& type "%x")>tmp & move /y tmp "%x")
Wenn Sie diese in einer Batch-Datei verwenden, denken Sie daran, die %
Zeichen:
@echo off
for %%x in (*.txt) do (
more +1 "%%x" >tmp
move /y tmp "%%x"
)
rem Run your utility here
for %%x in (*.txt) do (
echo X,Y,Z>tmp
type "%%x" >>tmp
move /y tmp "%%x"
)
Ok, anscheinend more
funktioniert nicht mit zu großen Dateien, was mich überrascht. Als Alternative, die funktionieren sollte, wenn Ihre Datei keine Leerzeilen enthält (obwohl es aussieht wie CSV von dem, was ich gesammelt habe):
for %%x in (*.txt) do (
for /f "skip=1 delims=" %%l in ("%%x") do (>>tmp echo.%%l)
move /y tmp "%%x"
)