
71590
16.01.2009, aktualisiert am 18.10.2012
Alle Zeilen außer die letzten 25 in Textdatei löschen
Hallo,
ich würde gerne per Batch alle Zeilen aus einer Textdatei außer die letzten 25 Zeilen löschen.
In der Textdatei befinden sich unterschiedliche Texte, jedoch immer zwei Zeilen Text und eine eine Zeile frei dazwischen, dann wieder zwei Zeilen Text usw., am Ende der Datei sind immer zwei Zeilen frei. Die Datei hat immer eine unterschiedliche Anzahl an Zeilen, das macht die Sache schwierig.
Diese Ordnung soll mit allen Freiräumen beibehalten werden, nur eben immer nur die letzten 25 Zeilen, alles andere soll gelöscht werden.
Gibt es eine Möglichkeit, das zu realisieren?
Danke im Voraus!
ich würde gerne per Batch alle Zeilen aus einer Textdatei außer die letzten 25 Zeilen löschen.
In der Textdatei befinden sich unterschiedliche Texte, jedoch immer zwei Zeilen Text und eine eine Zeile frei dazwischen, dann wieder zwei Zeilen Text usw., am Ende der Datei sind immer zwei Zeilen frei. Die Datei hat immer eine unterschiedliche Anzahl an Zeilen, das macht die Sache schwierig.
Diese Ordnung soll mit allen Freiräumen beibehalten werden, nur eben immer nur die letzten 25 Zeilen, alles andere soll gelöscht werden.
Gibt es eine Möglichkeit, das zu realisieren?
Danke im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106281
Url: https://administrator.de/forum/alle-zeilen-ausser-die-letzten-25-in-textdatei-loeschen-106281.html
Ausgedruckt am: 24.05.2025 um 08:05 Uhr
8 Kommentare
Neuester Kommentar

Servus,
wenn ich 25 gewünschte Zeilen durch 3 zwei Zeilen Text und eine eine Zeile frei Teile - komme ich aber auf eine ganz krumme Zahl
Wenn das nicht weiter tragisch ist, dann schau dir Bastlas Weg mal an, den mußt du nur umgekehrt nehmen.
Gruß
wenn ich 25 gewünschte Zeilen durch 3 zwei Zeilen Text und eine eine Zeile frei Teile - komme ich aber auf eine ganz krumme Zahl
Wenn das nicht weiter tragisch ist, dann schau dir Bastlas Weg mal an, den mußt du nur umgekehrt nehmen.
Gruß
Hallo Exterminator und TimoBeil!
Einen anderen als den oben angesprochenen Weg hätte ich auch noch anzubieten:
In dieser Fassung wird die Datei selbst (ohne Sicherungskopie) auf die letzten 25 Zeilen reduziert. Außerdem erfolgt keine Überprüfung, ob überhaupt genug Zeilen vorhanden sind (falls benötigt, reiche ich die später nach).
Grüße
bastla
Einen anderen als den oben angesprochenen Weg hätte ich auch noch anzubieten:
@echo off & setlocal
set "Datei=D:\Deine Datei.txt"
set "Zeilen=25"
Set R=%temp%\Reduce.vbs
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):F="%Datei%":T=Split(fso.OpenTextFile(F).ReadAll, vbCrLF)
>>%R% echo U=UBound(T):Set O=fso.CreateTextFile(F,True):For i=U-%Zeilen%+1 To U-1:O.WriteLine T(i):Next:O.Write T(U):O.Close
cscript //nologo %R%
Grüße
bastla

Hallo, geht es auch, dass eine bestimmte Zeile geändert wird? (Oder soll ich einen neuen Beitrag aufmachen?)
Wenn ich also z.B.:
Zeile1:Schüler1
Zeile2:Schüler2
Zeile3:\\server\Schüler3
Zeile4:Schüler4
So und daraus soll nun die Zeile 3 geändert werden.
Wie geht das? Ich dachte, es müsste nur eine kleine Veränderung in der Batch gemacht werden.
Danke.
Wenn ich also z.B.:
Zeile1:Schüler1
Zeile2:Schüler2
Zeile3:\\server\Schüler3
Zeile4:Schüler4
So und daraus soll nun die Zeile 3 geändert werden.
Wie geht das? Ich dachte, es müsste nur eine kleine Veränderung in der Batch gemacht werden.
Danke.
Hallo Exterminator!
Die Prüfung des Vorhandenseins der Datei (und, falls auch dies noch nötig sein sollte, eine zusätzliche Überprüfung auf eine Dateigröße von 0 Byte), kann durch den Batch erfolgen, die Kontrolle der Zeilenanzahl geht in VBS besser:
Grüße
bastla
Die Prüfung des Vorhandenseins der Datei (und, falls auch dies noch nötig sein sollte, eine zusätzliche Überprüfung auf eine Dateigröße von 0 Byte), kann durch den Batch erfolgen, die Kontrolle der Zeilenanzahl geht in VBS besser:
@echo off & setlocal
set "Datei=D:\Deine Datei.txt"
set "Zeilen=25"
if not exist "%Datei%" (echo "%Datei%" wurde nicht gefunden! & pause & goto :eof)
Set R=%temp%\Reduce.vbs
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):F="%Datei%":T=Split(fso.OpenTextFile(F).ReadAll,vbCrLF)
>>%R% echo U=UBound(T):Von=U-%Zeilen%+1:If U^<1 Then WScript.Quit:Else:If Von^<0 Then:Von=0:End If
>>%R% echo Set O=fso.CreateTextFile(F,True):For i=Von To U-1:O.WriteLine T(i):Next:O.Write T(U):O.Close
cscript //nologo %R%
bastla