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, 3185 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 Tools
gelöst Suche Tool für Fehlersuche (6)

Frage von honeybee zum Thema Windows Tools ...

Outlook & Mail
Outlook 2016 - keine Ergebnisse in der Suche (11)

Frage von Corraggiouno zum Thema Outlook & Mail ...

Windows Tools
gelöst Suche Programm um Log auszuwerten + Mail notify (3)

Frage von NetzwerkDude zum Thema Windows Tools ...

Outlook & Mail
gelöst Suche Möglichkeit in Outlook Mails einem Projekt zu zuordnen (3)

Frage von Barthinator zum Thema Outlook & Mail ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Router & Routing
Routingproblem in Homerouter-Kaskade mit Raspi (20)

Frage von Oldschool zum Thema Router & Routing ...

Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (14)

Frage von Datsspeed zum Thema Exchange Server ...

Verschlüsselung & Zertifikate
Mit Veracrypt eine zweite interne (non-system) Festplatte verschlüsseln (9)

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