Textmanipulation in BATCH (DOS)

Pascal, Basic und andere nicht aufgelistete
Antworten
cybear
Beiträge: 1
Registriert: Fr Sep 25, 2020 7:57 am

Textmanipulation in BATCH (DOS)

Beitrag von cybear » Fr Sep 25, 2020 7:59 am

Hallöchen!

Ich habe mal eine Frage bei der ich als Laie total überfordert bin obwohl das recht simpel erscheint:
Ich habe hier zwei Texdatein die ich alle 15 Minuten zusammenfügen will (das kriege ich gerade so hin :D), aber ich will jeweils die ersten x Zeilen der Textdatei überspringen beim Zusammenfügen. Ist das irgendwie möglich? Ich habe leider nur eine Möglichkeit gefunden um eine bestimme Zeile einer Textdatei in eine Variable zu kopieren. Ich möchte aber, wie gesagt ab Zeile x den Rest am liebsten in eine Variable kopieren und alles in eine neue Textdatei ausgeben.

Bis jetzt habe ich:

Code: Alles auswählen

@echo off
echo Willkommen
echo Hier werden die Textdateien zusammengeführt. Das ist die erste Version
echo
echo Bitte eine beliebige Taste drücken um Datei auszuführen.
pause

:MERGE

copy datei1.txt+datei2.txt datei3.txt /y
timeout 900
cls
GOTO MERGE
Vielen Dank schonmal im Voraus.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Textmanipulation in BATCH (DOS)

Beitrag von Xin » Fr Sep 25, 2020 2:28 pm

Die einfachste Antwort ist der Befehl tail.

Code: Alles auswählen

tail -n 10 datei1.txt > datei3.txt
tail -n 20 datei2.txt >> datei3.txt
Der Befehl überschreibt datei3 mit den letzten 10 Zeilen aus datei1 und fügt dann die letzten 20 Zeilen von datei 2 an.

Das Blöde an tail: Tail wird nicht mit Windows mitgeliefert. Entweder die GNU Utils nachinstallieren oder das Ubuntu Subsystem, da wird das vermutlich auch dabei sein.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Textmanipulation in BATCH (DOS)

Beitrag von mfro » Fr Sep 25, 2020 3:36 pm

Man glaubt's kaum, aber MS/DOS (bzw. die Windows-Konsole, auch wenn's mich dabei ein bißchen gruselt) kann das auch:

Code: Alles auswählen

MORE +n [Datei]
überspringt die ersten n Zeilen bei der Ausgabe:

Code: Alles auswählen

@echo off
echo Willkommen
echo Hier werden die Textdateien zusammengeführt. Das ist die erste Version
echo
echo Bitte eine beliebige Taste drücken um Datei auszuführen.
pause

:MERGE

more +3 datei1.txt > d1.txt
more +3 datei2.txt > d2.txt
copy d1.txt+d2.txt d3.txt /y
del d1.txt d2.txt
timeout 900
cls
GOTO MERGE
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

Antworten