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
GELÖST

Alle Zeilen außer die letzten 25 in Textdatei löschen

Frage Entwicklung Batch & Shell

Mitglied: 71590

71590 (Level 1)

16.01.2009, aktualisiert 18.10.2012, 5261 Aufrufe, 8 Kommentare

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!
Mitglied: 60730
16.01.2009, aktualisiert 18.10.2012
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ß
Bitte warten ..
Mitglied: bastla
16.01.2009 um 18:42 Uhr
Hallo Exterminator und TimoBeil!

Einen anderen als den oben angesprochenen Weg hätte ich auch noch anzubieten:
01.
@echo off & setlocal 
02.
set "Datei=D:\Deine Datei.txt" 
03.
set "Zeilen=25" 
04.
 
05.
Set R=%temp%\Reduce.vbs 
06.
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):F="%Datei%":T=Split(fso.OpenTextFile(F).ReadAll, vbCrLF) 
07.
>>%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 
08.
cscript //nologo %R%
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
Bitte warten ..
Mitglied: 71590
16.01.2009 um 18:50 Uhr
Vielen Dank für die schnellen Antworten, werde ich sofort ausprobieren.
Bitte warten ..
Mitglied: 71590
16.01.2009 um 19:01 Uhr
Danke, es funktioniert!
Es ist zwar nicht direkt Batch, reicht aber für mich aus.
Könntest du mir das mit der Zeilenüberprüfung bitte noch zeigen?
Bitte warten ..
Mitglied: Peter161
16.01.2009 um 21:06 Uhr
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.
Bitte warten ..
Mitglied: bastla
16.01.2009 um 22:13 Uhr
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:
01.
@echo off & setlocal 
02.
set "Datei=D:\Deine Datei.txt" 
03.
set "Zeilen=25" 
04.
 
05.
if not exist "%Datei%" (echo "%Datei%" wurde nicht gefunden! & pause & goto :eof) 
06.
 
07.
Set R=%temp%\Reduce.vbs 
08.
> %R% echo Set fso=CreateObject("Scripting.FileSystemObject"):F="%Datei%":T=Split(fso.OpenTextFile(F).ReadAll,vbCrLF) 
09.
>>%R% echo U=UBound(T):Von=U-%Zeilen%+1:If U^<1 Then WScript.Quit:Else:If Von^<0 Then:Von=0:End If 
10.
>>%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 
11.
cscript //nologo %R%
Grüße
bastla
Bitte warten ..
Mitglied: bastla
16.01.2009 um 22:55 Uhr
Hallo Peter161!
soll ich einen neuen Beitrag aufmachen?
Ja, tu das bitte - dort ist dann auch Platz genug, um zu erklären, warum gerade die Zeile 3 geändert werden soll, und welche Art von Änderung gewünscht wäre ...

Grüße
bastla
Bitte warten ..
Mitglied: 71590
16.01.2009 um 23:46 Uhr
Sieht aus, als würde es super funktionieren.
1000 Dank!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...