Batch zum löschen von text dateien x kleinergleich y zeilen
Hallo ich würde gerne wissen wenn ich in einem Ordner mehrere txt dateien habe sozusagen jede zeile (also laut batch delims) zähle und dass auch separat mit jeder txt datei. Wenn er zur nächsten(txt) geht den zählwert wieder auf 0 zurücksetzt, und bevor er zurücksetzt prüft wenn z.B. soll die gerade gezählte txt datei gelöscht werden (nicht nur die zeilen).
ich habe folgenden ansatz gefunden komme aber trotzdem nicht ganz weiter:
batch zeilen einer txt zählen und als variable speichern.
schon wenn ich bei dem beispiel die ersetze meckert cmd herum das irgendwas mit der syntax nicht sitmmt.
Würde mich über Antworten freuen. Es geht um unnötige logs die keinen wirklichen inhalt haben bis auf meta infos die mich nicht interresieren und eben mit 2 zeilen meine workstation zumüllen. dann gibt es aber auch welche mit 3 zeilen was man ja an der KB zahl nicht sehen kann und die zeilenzeichenlänge können evtl auch abweichen.
mfg Cynix
%%i <= 2 (%%i zeilenanzahl von aktueller *.txt)
ich habe folgenden ansatz gefunden komme aber trotzdem nicht ganz weiter:
batch zeilen einer txt zählen und als variable speichern.
schon wenn ich bei dem beispiel die
blabla.txt mit *.txt
Würde mich über Antworten freuen. Es geht um unnötige logs die keinen wirklichen inhalt haben bis auf meta infos die mich nicht interresieren und eben mit 2 zeilen meine workstation zumüllen. dann gibt es aber auch welche mit 3 zeilen was man ja an der KB zahl nicht sehen kann und die zeilenzeichenlänge können evtl auch abweichen.
mfg Cynix
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188550
Url: https://administrator.de/forum/batch-zum-loeschen-von-text-dateien-x-kleinergleich-y-zeilen-188550.html
Ausgedruckt am: 15.05.2025 um 21:05 Uhr
7 Kommentare
Neuester Kommentar
Halloechen,
Nun, die loesung war schon fast da, ich habe etwas den syntax angepasst, und schon konnte es losgehen. Ich habe imprinzip jetzt alles kommplett... nurnoch limit setzten (anzahl der zeilen, die die datei haben soll) und du kannst starten
Viel Spass
Gruss
Chris
Nun, die loesung war schon fast da, ich habe etwas den syntax angepasst, und schon konnte es losgehen. Ich habe imprinzip jetzt alles kommplett... nurnoch limit setzten (anzahl der zeilen, die die datei haben soll) und du kannst starten
@echo off
:config
SET Limit=20
:main
FOR /R %%I IN (*.txt) DO set "datei=%%I" && call :lines_count
goto finish
:Lines_count
FOR /F "delims=:" %%V IN ('findstr /N .* "%datei%"') DO set zeilen=%%V && call :delete
goto :eof
:delete
IF %Zeilen% LSS %limit% del "%datei%"
goto :eof
:finish
exit
Viel Spass
Gruss
Chris
moin cynix,
FIND gibt einfach nur die Zeilenanzahl aus, wenn die Datei als EingabeUmleitung erfolgt.
FINDSTR sucht nach /regulären Ausdrücken auf der ganzen /x Zeile.
Damit nach mehreren Werten gesucht werden kann (größer als 9) benutzt Du /c:"Zeichenfolge".
Ein Punkt alleine entspräche hier auch /C:"[0-9]" als regulärer Ausdruck.
Und bei Werten über den Einer Hinaus ist der reguläre Ausdruck für jeden Einzelnen Zehner bis 5x
jede Suche /c:"Wert" entspricht einem OR
Die CMD-Zeile muss zwar erstmal geschrieben werden, aber ist bei richtiger Anwendung auch schneller Fertig.
Mehr dazu unter Findstr /?
Gruß Phil
FIND gibt einfach nur die Zeilenanzahl aus, wenn die Datei als EingabeUmleitung erfolgt.
FINDSTR sucht nach /regulären Ausdrücken auf der ganzen /x Zeile.
Damit nach mehreren Werten gesucht werden kann (größer als 9) benutzt Du /c:"Zeichenfolge".
Ein Punkt alleine entspräche hier auch /C:"[0-9]" als regulärer Ausdruck.
Und bei Werten über den Einer Hinaus ist der reguläre Ausdruck für jeden Einzelnen Zehner bis 5x
findstr /rxc:"." "1." /c:"2." /c:"3." /c:"4." /c:"5."
oder auch
findstr /rxc:"." /c:"[1-5]."
Die CMD-Zeile muss zwar erstmal geschrieben werden, aber ist bei richtiger Anwendung auch schneller Fertig.
Mehr dazu unter Findstr /?
Gruß Phil
... oder anders formuliert:
findet alle Strings (= die ganze von "
Grüße
bastla
findstr /rxc:"." /c:"[1-5]."
find /c
" gelieferte Zeilenanzahl), die nur aus einem Zeichen oder aus zwei Zeichen, von denen das erste im Bereich der Ziffern 1 bis 5 liegt und das zweite egal ist, bestehen - daher würden damit alle Zahlenwerte von 0 bis 59 gefunden (wenn's nur von 0 bis 39 gehen soll, eben, wie oben "[1-3].
") - damit nicht auch zB "155" gefunden wird, gibt "/x
" vor, dass die Übereinstimmung für die gesamte Zeile (= Zahl) zu gelten hat.Grüße
bastla
Hallo cynix,
Bei meiner Loesung war "x < limit" LSS ist < | <= ist LEQ.
was uebersichtstechnisch, aus meiner Sicht, relativ gut ist, ist
http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
kann man ein bisschen schauen, zumindest fuer kleinere Aufgaben ;)
Gruss
Chris
Bei meiner Loesung war "x < limit" LSS ist < | <= ist LEQ.
was uebersichtstechnisch, aus meiner Sicht, relativ gut ist, ist
http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
kann man ein bisschen schauen, zumindest fuer kleinere Aufgaben ;)
Gruss
Chris