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

BatchRex - Regular Expressions in Batch nutzen (oder: Wie extrahiert man bestimmten Text)

Mitglied: colinardo

colinardo (Level 5) - Jetzt verbinden

21.07.2013, aktualisiert 25.04.2017, 10169 Aufrufe, 3 Danke

Da hier des öfteren Fragen in der Art "wie kann ich den String XY aus einem Text extrahieren" auftauchen, habe ich mich mal hingesetzt und ein Tool entwickelt das echte Regular Expressions in einer Batchdatei möglich macht. Ich nenne es mal passend : BatchRex.
Für all diejenigen die nur Batch nutzen (können/dürfen/sollen/wollen) soll das hier eine Erleichterung zum Extrahieren von speziellen Textfragmenten sein. Ich weiß es gibt da schon Tools wie "sed" - für manch einen Anfänger dürfte das jedoch Overkill sein.

Download

Das Tool kann hier kostenlos heruntergeladen werden
Aktuelle Version v0.8.0.50 vom 08.08.2013

Verwendung von BatchRex

BatchRex extrahiert Text anhand der Regular-Expression aus einem übergebenen String oder einer Textdatei und gibt die Treffer auf der Kommandozeile aus. Standardmäßig wird der erste Treffer in dem String ausgegeben. Sollen mehrere Vorkommen ausgegeben werden kann dies mit der Option /global erreicht werden.
Hinweise: Bei Verwendung der String-Option kann der Text nur aus einer Zeile bestehen und darf keine Zeilenumbrüche enthalten. Bitte beachtet auch die maximale Länge von 8.191 Zeichen die die Eingabeaufforderung akzeptiert. Sollen nur bestimmte Teile eines Patterns ausgegeben werden könnt Ihr das wie üblich mit Klammern () um den jeweiligen Part im Pattern machen. Außerdem kann mit dem Parameter /group:n die Gruppe ausgewählt werden welche ausgegeben werden soll.

BatchRex kennt folgende Kommandozeilen-Parameter:

Benötigte Parameter bei Übergabe eines Strings auf der Kommandozeile:
/string:"STRING DER DURCHSUCHT WERDEN SOLL" Text in dem gesucht werden soll
/pattern:"REGULAR EXPRESSION PATTERN" Regular Expression Pattern der den gesuchten Text extrahiert / Referenz der verfügbaren Regex-Optionen

Alternativ kann in einer Textdatei nach Text gesucht werden dann werden diese Parameter benötigt:
(Es kann nur eine der beiden Optionen genutzt werden: entweder /string oder /file)
Benötigte Parameter bei der Suche in einer Textdatei:
/file:"PFAD ZUR TEXTDATEI" Pfad zu einer Textdatei in der gesucht werden soll
/pattern:"REGULAR EXPRESSION PATTERN" Regular Expression Pattern der den gesuchten Text extrahiert / Referenz der verfügbaren Regex-Optionen

[Optionale Parameter]
/global Gibt alle Treffer des Pattern aus. Ohne diesen Parameter wird nur der erste Treffer des Pattern ausgegeben
/group:n Gibt die Gruppe mit der Nummer "n" innerhalb des Pattern an welche ausgegeben werden soll. Hierzu verwendet man Klammern im Pattern

Rückgabewerte
Zurückgegeben werden bei keinem Fehler die gefundenen Textstellen, ansonsten werden folgende Error-Codes zurückgegeben:

ERRORLEVEL Fehler
0 kein Fehler
1 Falsche Parameterverwendung
2 Keine passenden Fundstellen im Text
3 Syntaxfehler im Regular Expression Patttern
4 Datei existiert nicht
5 sonstiger Fehler

Beispiele

Beispiel 1: Die Verwendung in einer Batchdatei mit Übergabe eines Strings:

(Im Beispiel werden alle Telefonnummern extrahiert)
01.
@echo off 
02.
set "text=Dies ist der Text in dem gesucht wird Tel.: +49123456789 Tel.:+49987654321" 
03.
batchRex.exe /string:"%text%" /pattern:"Tel\.: ?(\+?\d*)" /global

Beispiel 2: Textdatei durchsuchen

01.
@echo off 
02.
set "datei=C:\Suchdatei.txt" 
03.
batchRex.exe /file:"%datei%" /pattern:"Tel\.: ?(\+?\d*)" /global

Beispiel 3: Textdatei durchsuchen und nur ersten Treffer zurückgeben

01.
@echo off 
02.
set "datei=C:\Suchdatei.txt" 
03.
batchRex.exe /file:"%datei%" /pattern:"Tel\.: ?(\+?\d*)"

Beispiel 4: Datei manuell Zeile für Zeile durchsuchen

01.
@echo off 
02.
set "datei=C:\Suchdatei.txt" 
03.
for /f "usebackq tokens=* delims=" %%f IN ("%datei%") DO ( 
04.
    batchRex.exe /string:"%%f" /pattern:"Tel\.: ?(\+?\d*)" 
05.
)
Achtung Sonderzeichen
Zu beachten sind die Batch-Sonderzeichen im Zusammenhang mit dem Pattern. Sollen diese z.B. in dem Pattern verwendet werden müssen diese "Escaped" werden. Das Escapen der Sonderzeichen der RegEx-Pattern selber ist zusätzlich zu beachten (siehe dazu Referenz der verfügbaren Regex-Optionen)

Bei Fragen zu Regular Expressions nutzt bitte zu aller erst die gängigen Anleitungen im Netz bzw. die weiter oben erwähnte Referenz der mit dem Tool gültigen RegEx-Syntax.
Fragen solcher Art gehören bitte nicht in die Kommentare dieses Beitrags.

Das Tool kann frei und ohne Einschränkungen genutzt werden.

Hoffe das Programm nutzt dem ein oder anderen bei seinem Projekt.

So nun viel Spaß damit ...

Grüße @colinardo

Versionshistorie:

Version 0.8.0.50 vom 08.08.2013
(+) Parameter /group:n hinzugefügt um Gruppenmatching zu ermöglichen
(+) Parameter /global hinzugefügt. Standardmäßig wird ohne Verwendung von /global nur der erste Treffer geliefert.
(--) Parameter /first entfernt und durch /global ersetzt

Erst-Version vom 21.07.2013
- BatchRex-Erstausgabe
Ähnliche Inhalte
Administrator.de Feedback

Entwicklertagebuch: Zitate, Text- und Codeblöcke

Information von admtechAdministrator.de Feedback8 Kommentare

Hi, heute habe ich ein paar sehr, sehr alte Fehler auf Administrator.de behoben. Sie stammen noch aus den Anfangszeiten ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logischeMicrosoft Office

Beim Import von Daten aus anderen Anwendungen kommt es häufig vor, dass Zahlen als Textwerte in der Excel-Tabelle erscheinen. ...

Papierkorb

Millionen Nutzer von Keyboard-App geleakt

Tipp von mathuPapierkorb1 Kommentar

vertrau nicht blind deinem (virtual) keyboard! Link von Heise.de

Windows 10

Bund will Windows 10 über Bundesclient sicher nutzen können

Information von kaiand1Windows 1012 Kommentare

Zu Limux-Ende in München nun dies. Quelle Heise.de Um den Einsatz von Windows 10 rechtskonform und sicher zu gestalten, ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 3 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement19 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...