Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

Zeilen in sehr großer TXT Datei (100.000 Zeilen) löschen. Geht nur bis 75 Prozent.

Mitglied: 0belixx

0belixx (Level 1) - Jetzt verbinden

27.06.2011, aktualisiert 17:53 Uhr, 3634 Aufrufe, 11 Kommentare

Hallo Leute,

habe folgendes Problem:

Ich muss die ersten 30 Zeilen aus einer txt löschen, so weit so gut, habe das wie folgt gelöst:


FOR /F "delims=" %%i in ('dir /B C:\Log.txt') do (more +30 "%%i" > "%%i.tmp")

Das Problem ist das die tmp Datei zwar erstellt wird aber nicht vollständig.
Die tmp Datei ist wesendlich kleiner als die txt und am Ende steht:

-- Fortsetzung (75%) --

es gibt aber keine Fortsetzung. Die Zeilenanzahl ist zZ knapp 100.000 Zeilen, kann sich aber noch verdoppeln.

Kann mir jemand helfen was ich übersehen habe.

Danke
0belixx
Mitglied: mathe172
27.06.2011 um 19:56 Uhr
Hallo,

versuch mal folgendes als Alternative:
01.
FOR /F "delims=" %%i in ('dir /B C:\Log.txt') do (> "%%i.tmp" (FOR /F "skip=29 usebackq delims=" %%A in ("%%i") do echo.%%A))
Bei "skip=29" musst du die zu löschende Anzahl Zeilen-1 angeben (NICHT 0)

Mathe172
Bitte warten ..
Mitglied: 0belixx
27.06.2011 um 20:35 Uhr
Vielen Dank für die schnelle Idee. Hab das jetz so.

FOR /F "delims=" %%i in ('dir /B C:\Temp\Log.txt') do (> "%%i.tmp" (FOR /F "skip=29 usebackq delims=" %%A in ("%%i") do echo.%%A))

Die Datei läuft jetzt durch.

Nur gibt es jetzt jede Zeile 2x und vor der ersten der zwei wird noch ein "C:\Temp>echo." gesetzt.

0belixx
Bitte warten ..
Mitglied: bastla
27.06.2011 um 20:44 Uhr
Hallo Obelixx und mathe172!

Die erste Schleife ist doch eigentlich sinnlos, da sie ja immer nur ein einzelnes "Log.txt" als %%i liefern kann ...

... daher sollte auch
01.
del Log.tmp 2>nul 
02.
for /f "usebackq skip=29 delims=" %%A in ("C:\Temp\Log.txt") do >>Log.txt.tmp echo %%A
genügen (wobei übrigens allfällige Leerzeilen auf der Strecke bleiben) ...

Übersichtlicher wird's natürlich noch, wenn für Pfad / Dateiname Variablen verwendet werden.

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
27.06.2011 um 20:50 Uhr
Hallo,

Die erste Schleife ist doch eigentlich sinnlos, da sie ja immer nur ein einzelnes "Log.txt" als %%i liefern kann ...
Wie peinlich...

Wobei m.M.n. deine Methode sehr langsam ist (mehrfaches öffnen der Datei für Schreibzugriff und anschliessendes Schliessen)
Wie wär's mit :
01.
rem -Geklaut/kopiert von bastla ;-) 
02.
>Log.txt.tmp (for /f "usebackq skip=29 delims=" %%A in ("C:\Temp\Log.txt") do echo.%%A)
Mathe172
Bitte warten ..
Mitglied: bastla
27.06.2011 um 20:57 Uhr
@mathe172
Sollte natürlich so besser gehen - aber aufgrund der Fehlerbeschreibung wollte ich die Ausgabefunktion mal etwas variieren ...
Ganz nebenbei: Der Punkt nach Deinem "echo" schadet zwar nicht, ist aber gar nicht nötig, da für ein "leeres" %%A der "do"-Teil ohnehin nicht ausgeführt wird (weshalb ja auch keine Leerzeilen in die Ergebnisdatei mitgenommen werden).

Grüße
bastla
Bitte warten ..
Mitglied: 0belixx
27.06.2011 um 21:05 Uhr
@bastla

Danke funktioniert langsam aber da ich keine Eile habe mach ich das so danke.

@mathe172
bei deinem schnippsel wird immer noch eine 2te Zeile angelegt.

0belixx
Bitte warten ..
Mitglied: mathe172
27.06.2011 um 21:34 Uhr
Hallo,

bei deinem schnippsel wird immer noch eine 2te Zeile angelegt.

Wie meinst du das?

Mathe172
Bitte warten ..
Mitglied: 0belixx
27.06.2011 um 21:53 Uhr
Wie ich oben schon geschrieben habe,
Die jeweilige Zeile der Quelldatei taucht 2x auf und vor der ersten der beiden Zeilen steht "C:\Temp>echo."

0belixx
Bitte warten ..
Mitglied: mathe172
27.06.2011 um 22:17 Uhr
Hallo,

uups , da hab ich was vergessen:
Füge davor ein @echo off-Befehl ein (da die Gesamte Ausgabe der Schleife umgeleitet wird, stehen da immer zuerst noch die echo-Befehle)

MfG,
Mathe172
Bitte warten ..
Mitglied: 0belixx
27.06.2011 um 22:21 Uhr
Jetzt gehts.

danke an euch beide.
0belixx
Bitte warten ..
Mitglied: pieh-ejdsch
28.06.2011 um 08:56 Uhr
moin Obelix,

wenn Du Batches mit angeschaltenem Echo (zum Debuggen) hast und nicht auf die Befehlsausgabe verzichten willst,
muss ein anderes Handle (Kanal für die Verarbeitung) als Handle 1 benutzt werden.

in Handle 1 (die CMD-gesamtausgabe) wird halt alles reingeschrieben.

Handle 3 ist noch auf der CMD-Line sichtbar wenn es nicht (weg-)umgeleitet wird.
Ab Handle 4 muss/sollte dann Explizit Umgeleitet werden.

01.
:: für eine zu sehende Befehlsausgabe mit Echo on 
02.
rem -Geklaut/kopiert von bastla ;-) 
03.
 
04.
4>Log.txt.tmp (for /f "usebackq skip=29 delims=" %%A in ("C:\Temp\Log.txt") do >&4 echo.%%A)
Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mehrere txt Dateien einlesen und letzte Zeile löschen
gelöst Frage von THRILLERBatch & Shell1 Kommentar

Hallo Gemeinde, ich beschäftige mich mit folgendem Problem. Und zwar will ich aus einem Ordner mehrere Dateien einlesen und ...

Batch & Shell
Batch: bestimmten string aus einer Zeile in txt löschen
Frage von Vit1985Batch & Shell4 Kommentare

Hallo, ich habe eine Textdatei und dort möchte ich einen bestimmten string löschen! Beispielzeile: Command: Hallo, wie Ich möchte ...

Batch & Shell
Batch: Mehrere .txt Dateien zu einer zusammenfügen, dabei jeweils die erste Zeile löschen
gelöst Frage von v.piepmatzBatch & Shell5 Kommentare

Hallo, ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem ...

Visual Studio
Rechnen mit sehr großen Zahlen (über 100.000 Stellen) mit Komma
gelöst Frage von Aicher1998Visual Studio12 Kommentare

Hallo ich hab da mal ein kleines Provlem. Ich müsste mit sehr langen Zahlen rechnen (über 100.000 Stellen). Hab ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 18 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...