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, 2896 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.

mfg 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst In allen Textdateien eines bestimmten Pfades die Zeilen x bis Ende löschen (2)

Frage von Schloth zum Thema Batch & Shell ...

Batch & Shell
Batsch doppelte Zeile in in Text finden und eine löschen (10)

Frage von GNLen1 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Windows Server
Zertifikat am DC erneuern funktioniert nicht (15)

Frage von takvorian zum Thema Windows Server ...