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

Frage Entwicklung Batch & Shell

Mitglied: Calim3ro

Calim3ro (Level 1) - Jetzt verbinden

22.02.2013 um 13:56 Uhr, 2585 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
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 14 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 16 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...