Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Findstr - Suche mit Wildcards

Frage Entwicklung Batch & Shell

Mitglied: Godzilla13

Godzilla13 (Level 1) - Jetzt verbinden

11.07.2012 um 14:42 Uhr, 3205 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
Verschlüsselung & Zertifikate
SSL-Webserver-Wildcard-Zertifikate (5)

Frage von OlliPWS zum Thema Verschlüsselung & Zertifikate ...

Verschlüsselung & Zertifikate
gelöst SSl Wildcard incl Exchange (2)

Frage von theoberlin zum Thema Verschlüsselung & Zertifikate ...

Batch & Shell
Wildcard im Dateinamen möglich bei Batchdatei? (3)

Frage von imebro zum Thema Batch & Shell ...

Windows Update
gelöst MS: Update-Server-Adressen OHNE Wildcards (17)

Frage von mrserious73 zum Thema Windows Update ...

Neue Wissensbeiträge
Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(4)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
Gruppenrichtlinie greift nicht zu! (24)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...