Findstr und regex
Hi Experten,
ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die Dateien von Interesse haben dieses Format:
call sheet BLABLABLABLABLA 1adde384-4d35-4ddb-b6d5-62c859a2f790.pdf
Beschreibung BlaBlaBlaBla 472e1a91-52f7-4689-b350-5df5c3126719.pdf
Dabei möchte ich am Ende alle PDF Dateien, die mit "call sheet" beginnen in einen separaten Ordner verschieben und auch alle PDFs, die nur diese 12345678-...-Endung haben.
Ich habe es jetzt erstmal so probiert. Aber leider klappt das so nicht
Hat jemand einen Tipp für mich. Bin leider, wie man sieht, kein regex Experte. Zusätzlich habe ich im Moment auch noch keine richtige Idee, wie ich dann die Daten am besten kopieren soll.
Danke schon mal
Gruß
-tobmes
ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die Dateien von Interesse haben dieses Format:
call sheet BLABLABLABLABLA 1adde384-4d35-4ddb-b6d5-62c859a2f790.pdf
Beschreibung BlaBlaBlaBla 472e1a91-52f7-4689-b350-5df5c3126719.pdf
Dabei möchte ich am Ende alle PDF Dateien, die mit "call sheet" beginnen in einen separaten Ordner verschieben und auch alle PDFs, die nur diese 12345678-...-Endung haben.
Ich habe es jetzt erstmal so probiert. Aber leider klappt das so nicht
dir /p | findstr /R:"([a-zA-Z0-9]{8}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{12}-).pdf"
Hat jemand einen Tipp für mich. Bin leider, wie man sieht, kein regex Experte. Zusätzlich habe ich im Moment auch noch keine richtige Idee, wie ich dann die Daten am besten kopieren soll.
Danke schon mal
Gruß
-tobmes
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347614
Url: https://administrator.de/contentid/347614
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Hi
Ich habe es jetzt erstmal so probiert. Aber leider klappt das so nicht
Hat jemand einen Tipp für mich. Bin leider, wie man sieht, kein regex Experte. Zusätzlich habe ich im Moment auch noch keine richtige Idee, wie ich dann die Daten am besten kopieren soll.
Nah dran
Das würde zumindest mal alle PDFs finden die mit "call sheet" beginnen und das Muster haben.
Was du aber mit
Oder willst du call sheet in Order A haben und alle anderen dann in Ordner B ?
Guck dir mal Powershell an. Damit klappt das ganze dann auch viel Einfacher:
ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die Dateien von Interesse haben dieses Format:
Du willst nach Dateinamen suche, nicht deren Inhalt durchsuchencall sheet BLABLABLABLABLA 1adde384-4d35-4ddb-b6d5-62c859a2f790.pdf
Beschreibung BlaBlaBlaBla 472e1a91-52f7-4689-b350-5df5c3126719.pdf
Beschreibung BlaBlaBlaBla 472e1a91-52f7-4689-b350-5df5c3126719.pdf
Ich habe es jetzt erstmal so probiert. Aber leider klappt das so nicht
dir /p | findstr /R:"([a-zA-Z0-9]{8}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{4}-)([a-zA-Z0-9]{12}-).pdf"
Hat jemand einen Tipp für mich. Bin leider, wie man sieht, kein regex Experte. Zusätzlich habe ich im Moment auch noch keine richtige Idee, wie ich dann die Daten am besten kopieren soll.
Nah dran
dir /b *.pdf | findstr /r "^call sheet.*[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}\.pdf"
Das würde zumindest mal alle PDFs finden die mit "call sheet" beginnen und das Muster haben.
Was du aber mit
Dabei möchte ich am Ende alle PDF Dateien, die mit "call sheet" beginnen in einen separaten Ordner verschieben und auch alle PDFs, die nur diese 12345678-...-Endung haben.
meinst verstehe ich nicht. Wenn du meinst, das einfach alles was mit diesem Ziffernmuster endet in deiner Liste sein soll, dann brauchst du ja die Unterscheidung mit dem call sheet nicht?Oder willst du call sheet in Order A haben und alle anderen dann in Ordner B ?
Guck dir mal Powershell an. Damit klappt das ganze dann auch viel Einfacher:
Get-ChildItem | Where-Object {$_.Name -match "[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}\.pdf"}
das wäre zumindest die direkteste Lösung, es in 2 Schritten zu machen.
Du kannst natürlich auch nur nach dem Muster suchen und dann die Ergebnisse in einer Schleife abarbeiten, in der du dann noch mal gesondert nach den Kriterien wie "Beginnt mit 'call sheet'" suchst. Aber für einen einmaligen oder statischen prozess ... muss man sich die Arbeit nicht machen
Ungetestet so in der Art
Du kannst natürlich auch nur nach dem Muster suchen und dann die Ergebnisse in einer Schleife abarbeiten, in der du dann noch mal gesondert nach den Kriterien wie "Beginnt mit 'call sheet'" suchst. Aber für einen einmaligen oder statischen prozess ... muss man sich die Arbeit nicht machen
Ungetestet so in der Art
Get-ChildItem | Where-Object {$_.Name -match "call sheet.*[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}\.pdf"}| Move-Item -Destination C:\Temp\DevTestA
Get-ChildItem | Where-Object {$_.Name -match "[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}\.pdf"}| Move-Item -Destination C:\Temp\DevTestB
Hi tobmes,
Ich bin nicht unbeding ein Pro mit Regex, aber so wie ich das sehe brauchst du mal 2 Abfragen.
1) ist call sheet enthalten => ab in Ordner A
2) ist 12345678- enthalten => ab in Ordner B
Warum also nicht nur nach diesen mustern suchen? Du kannst dir schnell ein Bild machen ob du richtig liegst wenn du Regexr.com verwendest.
Suchstring in das Feld eingeben (gehen auch ganze Texte).
Expression ausformulieren und in Echtzeit das Ergebnis sehen.
In meinem Bespiel habe ich das hier versucht:
Suchstring:
call sheet 1adde384-4d35-4ddb-b6d5-62c859a2f790.pdf
1adde384-4d35-4ddb-b6d5-62c12345678-.pdf
1adde384-4d35-4ddb-b6d5-62c12345678-
Expression:
(12345678-)(\.pdf)+
Ergebnis:
1adde384-4d35-4ddb-b6d5-62c12345678-.pdf
Ich bin nicht unbeding ein Pro mit Regex, aber so wie ich das sehe brauchst du mal 2 Abfragen.
1) ist call sheet enthalten => ab in Ordner A
2) ist 12345678- enthalten => ab in Ordner B
Warum also nicht nur nach diesen mustern suchen? Du kannst dir schnell ein Bild machen ob du richtig liegst wenn du Regexr.com verwendest.
Suchstring in das Feld eingeben (gehen auch ganze Texte).
Expression ausformulieren und in Echtzeit das Ergebnis sehen.
In meinem Bespiel habe ich das hier versucht:
Suchstring:
call sheet 1adde384-4d35-4ddb-b6d5-62c859a2f790.pdf
1adde384-4d35-4ddb-b6d5-62c12345678-.pdf
1adde384-4d35-4ddb-b6d5-62c12345678-
Expression:
(12345678-)(\.pdf)+
Ergebnis:
1adde384-4d35-4ddb-b6d5-62c12345678-.pdf