Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Findstr - Suche mit Wildcards

Frage Entwicklung Batch & Shell

Mitglied: Godzilla13

Godzilla13 (Level 1) - Jetzt verbinden

11.07.2012 um 14:42 Uhr, 3197 Aufrufe, 2 Kommentare

Hallo zusammen,

für die Generierung von Betriebsanleitungen haben wir Kapitellisten im XML Format, in denen die verwendeten Kapitel für die Betriebsanleitung erfasst sind. Für mich ist nun öfters notwendig zu ermitteln in welchen Kapitellisten bestimmte Kapitel erfasst sind. Da wir hier von mehreren hundert Kapitellisten reden ist eine manuelle Suche nicht mehr möglich.

Da man mit findstr auch XML Dateien durchsuchen kann, dachte ich mir das man diese Suche vielleicht via Batch umsetzen kann. Diese Dateien (diese liegen in verschiedenen Unterverzeichnissen) sollen nun via Batch auf eine bestimmte Zeichenkette hin durchsucht und alle gefundenen Dateien in einem Ergebnis Textfile aufgelistet werden. Die Zeichenkette nach der gesucht werden soll muss variabel sein und durch Benutzereingaben ergänzt werden können.

Beispiel Zeichenkette nach der gesucht werden soll:
Verwendung="J" Dokument_Nummer="1160" Dokument_Version="02"

Die Werte J, 1160 und 02 sollen dabei als Variablen fungieren die der Benutzer vor Beginn der Suche eingeben muss:

Benutzereingabe:
-> Verwendung J/N: J
-> Dokument Nummer: 1160
-> Dokument Version: 02
Aktion: Ermittelt alle XML Dateien in denen das Dokument mit Nummer 1160, Version 02 und Verwendung J auftaucht.
Diese Anforderung konnte ich umsetzen, siehe Code unten.

Zusätzlich soll es die Möglichkeit geben Wildcards als Variablen einzusetzen.

Benutzereingabe:
-> Verwendung J/N: *
-> Dokument Nummer: 1160
-> Dokument Version: *
Aktion: Ermittelt alle XML Dateien in denen das Dokument mit Nummer 1160 auftaucht, unabhängig davon welche Version oder Verwendung dieses hat.
Hier scheitere ich leider im Moment.

Ich habe von Batch Geschichten leider kaum einen Ahnung und mir meinen bisherigen Vorschlag aus verschiedenen Scripten zusammen kopiert. Der Code funktioniert soweit auch, in der Liste.txt stehen alle Dateinamen wo der Suchstring enthalten ist. Leider kann ich im Suchstring keine Wildcards verwenden. Gibt es irgendeine Möglichkeit das Wildcardproblem doch zu lösen?

01.
@echo off & setlocal EnableDelayedExpansion 
02.
 
03.
set /p Verwendung=Verwendung (J/N/*):  
04.
set /p DokNummer=Dokument Nummer:  
05.
set /p DokVersion=Dokument Version (2-stellig oder *):  
06.
 
07.
echo Verwendung="%Verwendung%" Dokument_Nummer="%DokNummer%" Dokument_Version="%DokVersion%" > suchstring.txt 
08.
 
09.
@(for /f "delims=" %%f in ('findstr /s /i /m /g:"suchstring.txt" *.xml') do @( 
10.
	echo %%~nf 
11.
)) > "Liste.txt" 
12.
 
13.
@pause
Danke vorab und viele Grüße,

Godzilla13 aka Alex
Mitglied: bastla
11.07.2012, aktualisiert um 15:51 Uhr
Hallo Godzilla13 und willkommen im Forum!

Soferne sich die Wildcard-Funktionalität darauf beschränken lässt, bei "*" gar nicht nach zB "Verwendung" zu suchen, könntest Du einfach den Suchstring so zusammenbauen:
01.
set "Suchstring=" 
02.
if "%Verwendung%" neq "*" set "Suchstring=Verwendung="%Verwendung%" " 
03.
if "%DokNummer%" neq "*" set "Suchstring=%Suchstring%Dokument_Nummer="%DokNummer%" " 
04.
if "%DokVersion%" neq "*" set "Suchstring=%Suchstring%Dokument_Version="%DokVersion%"" 
05.
>suchstring.txt echo %Suchstring%
BTW: EnableDelayedExpansion ist hier nicht erforderlich ...

Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
12.07.2012 um 07:39 Uhr
Vielen Dank bastla, deine Lösung passt perfekt.
Bitte warten ..
Ähnliche Inhalte
Windows Update
gelöst MS: Update-Server-Adressen OHNE Wildcards (17)

Frage von mrserious73 zum Thema Windows Update ...

Outlook & Mail
Suche im Kalender Outlook 2016 funktioniert nicht (5)

Frage von Eduuaard zum Thema Outlook & Mail ...

Windows Update
gelöst Suche in Microsoft Outlook 2016f unktioniert nach MS Pachday Juni 2017 nicht mehr ! (4)

Frage von planetIT2016 zum Thema Windows Update ...

Batch & Shell
Findstr Path CMD ja - Batch Script nein - FireFox Profiles (2)

Frage von ChrisIO zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
iOS
16 iPads zentrall verwalten (16)

Frage von simonlohr zum Thema iOS ...

Viren und Trojaner
Ransomware .nm4 (15)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Zusammenarbeit
Administrator Verhalten nach Vertragskündigung (13)

Frage von sysbone zum Thema Zusammenarbeit ...

Microsoft Office
gelöst VBA Excel Problem mit UserForm, ListBox und TextBox (12)

Frage von abuelito zum Thema Microsoft Office ...