
132351
07.02.2017, aktualisiert um 15:49:15 Uhr
Dateien mit Liste suchen
Hallo zusammen
Ich muss aus einem Stammordner mit mehreren Unterverzeichnissen PDF Dateien suchen und in einen Ordner ablegen.
Ich habe eine Batch Datei erstellt und eine Liste mit den Suchbegriffen der die gesuchten Dateien enthält.
Wenn ich nur nach einem Begriff suche geht alles tip-top, wenn mehrere Suchworte in der Liste sind stimmt die Ausgabe nicht.
Ich vermute es wird nur der letzte Suchbegriff aus der Liste berücksichtigt.
Weiter sollte der Job jede Nacht laufen und das Stammverzeichnis auf neue Dateien untersucht werden ohne das alles überschrieben werden muss.
Ich bin kein Profi in dieser Sache darum benötige ich Eure Hilfe.
Inder Liste (src.txt) sind folgende Suchbegriffe, jeder Begriff auf einer Zeile
A000_*
A100_*
A200_*
BHP000_*
BHP100_*
BHP200_*
GB00_*
GK00_*
GKR00_*
HP000_*
HP100_*
HP200_*
HPM000_*
HPM100_*
HPM200_*
HPR000_*
HPR100_*
HPR200_*
NE000_*
SHP000_*
Danke
Phippu
Ich muss aus einem Stammordner mit mehreren Unterverzeichnissen PDF Dateien suchen und in einen Ordner ablegen.
Ich habe eine Batch Datei erstellt und eine Liste mit den Suchbegriffen der die gesuchten Dateien enthält.
Wenn ich nur nach einem Begriff suche geht alles tip-top, wenn mehrere Suchworte in der Liste sind stimmt die Ausgabe nicht.
Ich vermute es wird nur der letzte Suchbegriff aus der Liste berücksichtigt.
Weiter sollte der Job jede Nacht laufen und das Stammverzeichnis auf neue Dateien untersucht werden ohne das alles überschrieben werden muss.
Ich bin kein Profi in dieser Sache darum benötige ich Eure Hilfe.
@echo off &setlocal
set "sourceRoot=\\file01\CAD-DATEN"
set "sourceList=src.txt"
set "destFolder=C:\baugruppen_temp
for /f "delims=" %%i in ('dir /a-d /b /s "%sourceRoot%\*.pdf"^|findstr /ig:"%sourceList%"') do (
ECHO copy "%%~i" "%destFolder%\"
)
PAUSE
Inder Liste (src.txt) sind folgende Suchbegriffe, jeder Begriff auf einer Zeile
A000_*
A100_*
A200_*
BHP000_*
BHP100_*
BHP200_*
GB00_*
GK00_*
GKR00_*
HP000_*
HP100_*
HP200_*
HPM000_*
HPM100_*
HPM200_*
HPR000_*
HPR100_*
HPR200_*
NE000_*
SHP000_*
Danke
Phippu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328690
Url: https://administrator.de/forum/dateien-mit-liste-suchen-328690.html
Ausgedruckt am: 05.05.2025 um 18:05 Uhr
16 Kommentare
Neuester Kommentar

Einmal hier rein geschaut https://ss64.com/nt/findstr.html
,hättest du gelesen das hier Regular Expression Syntax zum Einsatz kommt und man für beliebige Zeichen ein PunktSternchen verwendet (.*) wenn in der ersten Zeile ein unescapetes Meta-Zeichen (das Sternchen) zum Einsatz kommt. Man sollte deswegen die Option /L für Literal oder /R für Regular Expression immer angeben.
Gruß
,hättest du gelesen das hier Regular Expression Syntax zum Einsatz kommt und man für beliebige Zeichen ein PunktSternchen verwendet (.*) wenn in der ersten Zeile ein unescapetes Meta-Zeichen (das Sternchen) zum Einsatz kommt. Man sollte deswegen die Option /L für Literal oder /R für Regular Expression immer angeben.
/G:file - The default depends on the content of the first non-empty line in the file. If the first search string is a valid regular expression that contains at least one un-escaped meta-character, then all search strings are treated as regular expressions. Otherwise all search strings are treated as literals.

Noch genauer?? X-)
und in der Datei dann so:
............. ^| findstr /ierg:"%sourceList%"
\\A000_.*
\\A100_.*
\\A200_.*
\\BHP000_.*

Geht hier einwandfrei ...

ev habe ich etwas übersehen.
jupp den Parameter eund hier
set "destFolder=C:\baugruppen_temp
fehlt ein Anführungszeichen am Ende.Ich gehe davon aus das die Namen vom "Anfang" des Dateinamens gesucht werden, deswegen der Doppelbackslash (Regexescaping für den Backslash vor dem Dateinamen).

Dann hast du die Textdatei vermutlich in einem falschen Format (Unicode) gespeichert. Geht hier wie gesagt absolut problemlos.
Geht hier ja auch
Hilfe bei Batch Datei gesucht
Geht hier ja auch
Hilfe bei Batch Datei gesucht

Ich würde das aber trotzdem mit Powershell abfackeln wollen ...
$filter = "^(A000_.*|A100_.*|A200_.*)"
gci 'c:\Ordner\*.pdf' -Recurse | ?{$_.Basename -match $filter} | copy-item -destination 'C:\Backup' -Force

ANSI|ASCII