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 Mit Batch-Datei Textdatei nach Zeichenblöcke suchen, ausschneiden und in neues Textfile einfügen

Mitglied: Calim3ro

Calim3ro (Level 1) - Jetzt verbinden

22.02.2013 um 13:56 Uhr, 2602 Aufrufe, 7 Kommentare

Hallo Administradoren und Mods

erstmal ein grosse Lob an diese Seite und die Benutzer, sie hat mir schon des öfteren weitergeholfen.

Ich möchte aus einem Textfile, dass mehrer zusammengehörige Zeilen (Datenblöcke) enthält, einzelne Datenböcke suchen, ausschneiden und in einem neuen Textfile einfügen.

Dies ist ein Beispiel, wie es in der Textdatei vorkommt:

@Z 00002 000011 10
8509002 0 4 072257
8509004 0 3 072257
8509411 0 2 072257
8503225 0 6 072257
8503206 0 2 072257
8503202 0 6 072257
8503000 0 14 072257
8500010 2 9 072257
8509000 1 8 072257
8503209 0 3 072257
@Z 00002 085000 01
8008094 0 18 000030
8500010 1 9
8500090 0 5 083466
8014350 0 1 000030
8014277 0 4
8014228 0 3 000030
@Z 01110 80____ 01
8029034 0 9 053540
8014008 0 3 053540
@Z 01113 000022 02
8506210 1 12 000060

usw, Textdatei ca 30mb gross

Ein Datenblock geht immer von der @Z bis zur Zeile oberhalb der nächsten Zeile mit @Z
Also so:

@Z 00002 085000 01
8008094 0 18 000030
8500010 1 9
8500090 0 5 083466
8014350 0 1 000030
8014277 0 4
8014228 0 3 000030

Aus diesem Textfile möchte ich alle Datenblöcke, die ein 085000 beinhalten, ausschneiden und in ein anderes Textfile kopiern.

Das Batch sollte diese Operation solange durchführen, bis keine Datenblöcke mit 085000 vorhanden sind.

Leider habe ich keinen blassen Schimmer, wie ich dies angehen soll.

Hoffe jemand kann mir weiterhelfen.

Bei Unklarheitn einfach nachfragen. Besten Dank für eure Bemühungen.

Es grüsst Calimero



Mitglied: bastla
22.02.2013, aktualisiert um 18:40 Uhr
Hallo Calim3ro und willkommen im Forum!

Mit einem VBScript ließe sich das eleganter lösen als mit Batch:
01.
Ein = "Textfile.txt" 
02.
Aus = "Ausgeschnittene.txt" 
03.
Markierung = "Z" 
04.
Suche1 = "085000" 
05.
Suche2 = "000022" 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
T = Split(fso.OpenTextFile(Ein).ReadAll, Markierung) 
09.
Set A = fso.CreateTextFile(Aus) 
10.
 
11.
For Each Block In T 
12.
    If InStr(Block, Suche1) + InStr(Block, Suche2) > 0 Then A.Write Markierung & Block 
13.
Next
Zur Not könnte das Script auch von einem Batch (temporär) erzeugt werden.

Grüße
bastla

[Edit] Verwendung eines zweiten Suchbegriffs ergänzt [/Edit]
Bitte warten ..
Mitglied: Calim3ro
22.02.2013 um 17:05 Uhr
Hallo bastla

Wow, ging ja schnell! Habe es ausprobiert und funktioniert 1A.

Besten Dank dafür.

Gruss Calimero
Bitte warten ..
Mitglied: Calim3ro
22.02.2013 um 17:47 Uhr
Eine Frage habe ich allerdings noch:

Wie muss der vbs-Script angepasst werden, damit noch nach einer zweiten Nummer gesucht und den Block in das selbe Textfile kopiert? zB. 000022

Einfach den ersten Skript unter den ersten kopieren und Suche anpassen war leider nicht...

Danke für die Bemühungen.
Bitte warten ..
Mitglied: bastla
22.02.2013 um 18:42 Uhr
Hallo Calim3ro!

Habe oben eine (ungetestete) Anpassung vorgenommen.

Sollten es noch mehr Suchbegriffe werden, würde ich das allerdings etwas modifizieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Calim3ro
22.02.2013 um 19:22 Uhr
Hallo bastla

Getestet und geht prima. Auch das hinzufügen von einer Suche3 klappt.

Aber es werden noch ca. 15 verschieden Suchzahlen hinzukommen.

Wie sähe da Deine Modifikation aus?

Besten Dank nochmal

Gruss Calimero
Bitte warten ..
Mitglied: bastla
22.02.2013 um 19:43 Uhr
Hallo Calim3ro!

Bei einer größeren Anzahl an Suchbegriffen könntest Du die folgende Variante testen (ich hab's nicht gemacht ):
01.
Ein = "Textfile.txt" 
02.
Aus = "Ausgeschnittene.txt" 
03.
Markierung = "Z" 
04.
Suche = Array("085000", "000022", "112233", "555555") 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
T = Split(fso.OpenTextFile(Ein).ReadAll, Markierung) 
08.
Set A = fso.CreateTextFile(Aus) 
09.
 
10.
For Each Block In T 
11.
    Gefunden = False 
12.
    For Each Suchwort In Suche 
13.
        If InStr(Block, Suchwort) > 0 Then 
14.
            Gefunden = True 
15.
            Exit For 
16.
        End If 
17.
    Next 
18.
    If Gefunden Then A.Write Markierung & Block 
19.
Next
Weitere Alternative: Eine Textdatei, die je ein Suchwort pro Zeile enthält, bereitstellen und am Scriptanfang einmalig in ein Array einlesen - das könnte dann so aussehen:
01.
Ein = "Textfile.txt" 
02.
Aus = "Ausgeschnittene.txt" 
03.
Markierung = "Z" 
04.
Suche = "Suchbegriffe.txt" 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
T = Split(fso.OpenTextFile(Ein).ReadAll, Markierung) 
08.
S = Split(fso.OpenTextFile(Suche).ReadAll, vbNewline) 
09.
Set A = fso.CreateTextFile(Aus) 
10.
 
11.
For Each Block In T 
12.
    Gefunden = False 
13.
    For Each Suchwort In S 
14.
        If InStr(Block, Suchwort) > 0 Then 
15.
            Gefunden = True 
16.
            Exit For 
17.
        End If 
18.
    Next 
19.
    If Gefunden Then A.Write Markierung & Block 
20.
Next
Achtung: In der Datei "Suchbegriffe.txt" keine Leerzeilen (und auch keine Zeilenschaltung nach der letzten Zeile) verwenden!

Grüße
bastla
Bitte warten ..
Mitglied: Calim3ro
22.02.2013 um 20:12 Uhr
Hallo bastla

Habe mich für die zweite Version mit der "Suchbegriffe.txt" entschieden, damit bin ich flexibler falls noch welche dazukommen oder wegfallen.

Hat super geklappt! Danke Dir vielmal. Falls noch Fragen auftauchen, darf ich mich sicher wieder melden.

Bis dann...

Gruss Calimero
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Neueste Datei mit Batch suchen
gelöst Frage von thilo-55Batch & Shell4 Kommentare

Ein herzliches Hallo an die Teilnehmer des Forums. Leider komme ich mit meinen batch/dos-Kenntnissen nicht mehr weiter. Evtl. kann ...

Batch & Shell
Batch Datei - Mehrzeilige Textdatei
gelöst Frage von SchmakusBatch & Shell5 Kommentare

Hallo Zusammen, ich möchte mit einer Batch Datei eine Textdatei erstellen. Ich verwende 2 Variablen (%1, %2). Die Textdatei ...

VB for Applications

In Binärdatei suchen und Teile ausschneiden

Frage von Haegar75VB for Applications4 Kommentare

Hallo, vielleicht kann mir jemand helfen Ich möchte mit vb.net in einer Binärdatei nach dem Vorkommen von drei Zeichen ...

Batch & Shell

BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren

gelöst Frage von Manuel1234Batch & Shell9 Kommentare

Hallo zusammen! Ich bin neu hier und freue mich auf die Gesellschaft. In meiner Frage geht es um eine ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 8 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 18 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...