Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch zum löschen von text dateien x kleinergleich y zeilen

Frage Entwicklung Batch & Shell

Mitglied: cynix

cynix (Level 1) - Jetzt verbinden

25.07.2012, aktualisiert 02:01 Uhr, 2864 Aufrufe, 7 Kommentare

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.
01.
 %%i <= 2  (%%i zeilenanzahl von aktueller *.txt)
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:

http://suche.administrator.de/forum/batch-zeilen-einer-txt-z%C3%A4hlen- ...

schon wenn ich bei dem beispiel die
01.
 blabla.txt mit *.txt 
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.

Mit freundlichen Grüßen Cynix
Mitglied: Sheogorath
25.07.2012 um 09:53 Uhr
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

01.
@echo off 
02.
:config 
03.
SET Limit=20 
04.
 
05.
 
06.
:main 
07.
FOR /R %%I IN (*.txt) DO set "datei=%%I" && call :lines_count 
08.
goto finish 
09.
 
10.
 
11.
 
12.
 
13.
:Lines_count 
14.
FOR /F "delims=:" %%V IN ('findstr /N .* "%datei%"') DO set zeilen=%%V && call :delete 
15.
goto :eof 
16.
 
17.
:delete 
18.
IF %Zeilen% LSS %limit% del "%datei%" 
19.
goto :eof 
20.
 
21.
 
22.
 
23.
 
24.
 
25.
:finish 
26.
exit
Viel Spass

Gruss
Chris
Bitte warten ..
Mitglied: bastla
25.07.2012 um 12:27 Uhr
... wobei vielleicht noch anzumerken wäre, dass mit "FOR /R" auch Dateien in Unterordnern erfasst werden ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
25.07.2012, aktualisiert um 15:34 Uhr
moin,

warum macht Ihr immer sowas Ellenlanges?

Test in der CMD-Line:
01.
for %i in (D:\Log\*.log) do @find /c /v "" <%i |findstr /rxc:"." /c:"[123]." &&echo del "%~i"
Löscht alle Logdateien mit weniger als 40 Zeilen.

Gruß Phil
Bitte warten ..
Mitglied: cynix
25.07.2012 um 15:48 Uhr
Hey leute danke für eure hilfe die 2. Lösung versteh ich allerdings nicht ganz ? wo zählt er da bis 40 ? bzw.
Bei der ersten lösung versteh ich es so dass x <= limit (also 20) / oder ist x < limit mit lss gemeint ?
Bitte warten ..
Mitglied: pieh-ejdsch
25.07.2012, aktualisiert um 16:16 Uhr
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
findstr /rxc:"." "1." /c:"2." /c:"3." /c:"4." /c:"5." 
 
oder auch 
findstr /rxc:"." /c:"[1-5]."
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
Bitte warten ..
Mitglied: bastla
25.07.2012, aktualisiert um 19:05 Uhr
... oder anders formuliert:
findstr /rxc:"." /c:"[1-5]."
findet alle Strings (= die ganze von "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
Bitte warten ..
Mitglied: Sheogorath
26.07.2012 um 08:41 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch die alle Dateien löscht die Älter als 3 Tage sind (5)

Frage von Azubine zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...