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

gelöst Zeilennummerierung einer Textdatei mittels Batch entfernen

Mitglied: Shadow377

Shadow377 (Level 1) - Jetzt verbinden

17.07.2006, aktualisiert 18.07.2006, 8391 Aufrufe, 4 Kommentare

Hallo an allle
Bin neu hier im Forum und hoffe ihr könnt mir hier weiterhelfen..

Ich habe folgendes Problem: Ich muss von mehreren mehrzeiligen Textdateien (z.B. a.txt, b.txt) jeweils eine Zeile zufällig auswählen und ein eine neue Exceltabelle(c.xls) schreiben. Die Quelle für die Textdateien sind Eventlogs (Spalten Typ, Datum, Uhrzeit usw); sie sind durch Tabulatoren getrennt.

Meine Strategie zur Lösung des Problems war folgende:
Ich durchsuche die Dateien für die einzelnen Eventlogs mit findstr systematisch nach jedem Datum eines bestimmten Zeitraumes (beispielsweise 01.07.2006 bis 08.07.2006), schreibe alle Übereinstimmungen in eine eigene Textdatei (wären die oben genannten a.txt, b.txt usw). Dannach nummeriere ich mit findstr /n "^" die Zeilen der einzelnen Dateien durch und leite die Ausgabe in eine andere Datei (für a.txt z.B. a2.txt) um.
Dannach wird mit
Set /A "Counter=0"
FOR /F "delims=" %%A IN (a2.txt) DO SET /A "COUNTER+=1"

durchgezählt, wie viele Zeilen in der Datei a2.txt vorhanden sind, um anschließend mit %random% eine Zahl zu bestimmen; die übereinstimmende Zeilennummer wird dann wieder mit findstr überprüft und ausgegeben.

So weit, so gut; jetzt habe ich genau 1 Zeile pro Tag, die noch immer durch Tabulatoren getrennte Einträge besitzt und somit durch ändern der Extension von txt auf xls zu einer Excel-Tabelle wird.

Allerdings gibt es dabei folgendes Problem:
Die Zeile hat folgenden Aufbau:
Zeilennummer:Spalte1|tab|Spalte2|tab|Spalte3|....

Für das endgültige Resultat muss ich allerdings die Ausgabe OHNE Zeilennummer: erhalten. Ob die Zeilennummer 1, 2 oder auch 6- stellig ist, kann ich im vorhinein nicht sagen, daher ist es auch nicht möglich stur die ersten n-Stellen zu entfernen.
Mitglied: AxelHahn
17.07.2006 um 15:58 Uhr
Hallo,

die Zeilennummer wird doch immer mit ":" getrennt. Dann kannst du in deiner FOR-Schleife mit "tokens=1,2* delims=:" arbeiten.

for /F "tokens=1,2* delims=:" %%a in (Dateiname.txt) do echo %%b

Axel
Bitte warten ..
Mitglied: Shadow377
18.07.2006 um 08:23 Uhr
Danke für diese schnelle Antwort. Leider bin ich nicht so der Batchprofi und verstehe daher auch den Syntax nicht so ganz, wäre super wenn du ihn mir erklären könntest..

Ich habe die Zeile mal kopiert und ausprobiert; dabei habe ich allerdings leider festgestellt, dass die oben genannte Uhrzeit leider darunter leidet und nach den Stunden abgeschnitten wird (inklusive dem Rest der Zeile).
Beispiel: Statt "Durch Tabulatoren getrennte Einträge"|tab|17:20:37|tab|"weitere durch Tabulatoren getrennte Einträge" erhalte ich also nur noch folgende Ausgabe:
Einträge vor Datum|tab|17
Es wird somit die gesamte Zeile nach den Stunden abgeschnitten, das Problem ist allerdings, dass nur vor dem ersten : weggeschnitten werden darf (unabhängig von der Anzahl der Zeichen davor); die restlichen : müssen unbeeinflusst bleiben.
Es ist leider auch nicht sicher vorhersagbar, wie viele : in der Zeile enthalten sind..

Information zur Quelldatei: Sie ist derzeit schon so gefiltert, dass nur noch eine einzige Zeile (Zeilennummer:Zu verarbeitender Text)+einem Zeilenumbruch enthalten sind. Dies ist wohl nicht die optimalste Lösung (lieber wäre es mir, die Dateiausgabe schon bei findstr abzufangen, dann die Zeilennummer zu entfernen und dann erst in eine Datei zu schreiben, allerdings ist mir eine schnelle Lösung des Problems und ein nicht zu komplizierter Code wichtiger...

Ich bin übrigens draufgekommen, dass die folgende Zeile das Ergebnis nur in der cmd ausgiebt, nicht allerdings in eine Datei schreibt, war das beabsichtigt? Das Ergebnis brauche ich nämlich wieder in einer Datei.
Daher habe ich die Zeile wie folgt geändert:
for /F "tokens=1,2* delims=:" %%a in (Quelle.txt) do echo>>Ziel.txt %%b
Bitte warten ..
Mitglied: AxelHahn
18.07.2006 um 08:43 Uhr
Hallo,

wenn das mit der Uhrzeit nicht klappt ... da war doch ein kleiner Fehler. Bei Tokens gib 1* statt 1,2* an.


del output.txt 2>nul
for /F "tokens=1* delims=:" %%a in (datiename.txt) do echo %%b>>output.txt


Erklärung:
a) delims ist der Trenner in der Zeile.
b) tokens gibt an, welche Felder, die durch das (die) Trennzeichen entstehen, zurückgeliefert werden. Die Felder werden in den nächstfolgenden Buchstaben als Variablen abgelegt.

Beispiel:

for /F "tokens=1,4,5 delims=," %%m in (datiename.txt) do echo %%m .. %%n .. %%o

Bei einer Kommaseparierten Liste werden die Felder 1,4 und 5 gelesen. Innerhalb der For-Schleife sind sie als Variablen n, m und o greifbar (ab m hochzählend, weil %%m als Zählvariable angegeben ist).

c) Bei Tokens kann man auch - und * verwenden. Durch den Wert "1*" kann ich genau 2 Felder abgreifen: den Wert vor meinem Trenner und den ganzen Rest ab dem Trenner (unabh. ob das Trennzeichen noch einmal auftaucht oder nicht).

Das erklärte es auch noch einmal:

FOR /?



Schönen Tach noch!
Axel
Bitte warten ..
Mitglied: Shadow377
18.07.2006 um 08:54 Uhr
Super, hat geklappt, vielen Dank
Kompliment übrigens im Bezug auf die wirklich sehr kurzen Antwortzeiten und guten Beiträge. Ich muss sagen auch wenn ich in gewissem Maß damit gerechnet habe bin ich doch positiv überrascht und beeindruckt, dass die Antworten derart schnell kommen

Danke auch für die gute Erklärung
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Leerzeilen per Batch aus Textdatei entfernen

gelöst Frage von Yenne97Batch & Shell9 Kommentare

Hallo Zusammen Ich bin neu hier. Ich würde gerne einen Batch schreiben der: 1. In einer Textdatei alle Leerzeichen ...

Batch & Shell

Mehrere Zeilen aus einer Anzahl von Textdateien per Batch entfernen

gelöst Frage von lukeskywalker501Batch & Shell4 Kommentare

Hi Leute, erst mal ein dickes moin an euch ! Ich habe folgende Sache und hoffe das ihr mir ...

Ubuntu

Nach Zeilen aus der ersten Textdatei in der zweiten Textdatei suchen und diese dort entfernen

gelöst Frage von takitanoUbuntu3 Kommentare

Frohes Neues an alle! Ich habe 2 Textdateien. Die erste Textdatei beinhaltet Suchbegriffe, die ich in der zweiten Datei ...

Batch & Shell

Entfernen eines Strings vor einem bestimmten Zeichens in einer Textdatei

gelöst Frage von Privex007Batch & Shell3 Kommentare

Hallo an alle Coder, ich habe Probleme mit dem extrahieren eines String aus einer "txt"-Datei. Ich habe folgende Zeilen ...

Neue Wissensbeiträge
E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 1 TagE-Mail8 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 1 TagHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 1 TagSicherheits-Tools1 Kommentar

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 2 TagenServer-Hardware4 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Heiß diskutierte Inhalte
Sicherheits-Tools
Virenprogramm lässt Programme nicht starten
Frage von SurferGirlSicherheits-Tools23 Kommentare

Hallo, ich bin neu hier, ich hoffe ich habe die richtige Rubrik gewählt. Falls nicht, tut es mir leid. ...

Windows Server
SQL Server Instanz (Eplan) auf WIN 2008 RC2 Server frisst RAM ohne Limit
Frage von derinderinderinWindows Server17 Kommentare

Hallo Zusammen, Wir haben hier einen Windows 2008 RC2 Server. Darauf läuft ein SQL Server Express 2014 Version 12.0.4232.0. ...

Windows 10
Best Practice für Schulungsräume
Frage von Sn0wFoxWindows 1016 Kommentare

Hallo, leider bin ich auch nach langer Suche nicht auf eine zufriedenstellende Nicht-Cloud-Lösung gestoßen und wollte mal Fragen ob ...

Exchange Server
Outlook for Android - Kann nicht eingerichtet werden mit Exchange
Frage von HeuristikerExchange Server11 Kommentare

Servus Leute, momentan bin ich auf der Suche nach einem E-Mail-Client inklusive Kalender für Android mit demselben Look-And-Feel. Wir ...