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, 3191 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
Voice over IP
Suche 3cx Server Version 8

Frage von Herbrich19 zum Thema Voice over IP ...

Firewall
gelöst Suche Hardware-Firewall im privaten Bereich von Sophos (6)

Frage von Stefan007 zum Thema Firewall ...

Router & Routing
gelöst Suche guten Router für Router-Kaskaden (15)

Frage von McLion zum Thema Router & Routing ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
gelöst Benutzer lässt sich nur an einem Clientcomputer anmelden (17)

Frage von Ammann zum Thema Windows Server ...

Netzwerke
SFP Modul (miniGibic) (11)

Frage von apranet zum Thema Netzwerke ...

Batch & Shell
gelöst Gruppenzugehörigkeit von AD Usern ermitteln - die Perfektion fehlt (11)

Frage von Stefan007 zum Thema Batch & Shell ...