132351
Goto Top

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.

@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

Content-Key: 328690

Url: https://administrator.de/contentid/328690

Printed on: April 26, 2024 at 22:04 o'clock

Mitglied: 132272
132272 Feb 07, 2017 updated at 15:46:06 (UTC)
Goto Top
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.
/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.
Gruß
Mitglied: 132351
132351 Feb 07, 2017 at 16:11:22 (UTC)
Goto Top
Hallo,
Herzlichen Dank für die Anwort, kannst Du Dich bitte etwas genauer fassen.

Danke
Mitglied: 132272
132272 Feb 07, 2017 updated at 16:26:44 (UTC)
Goto Top
Noch genauer?? X-)

 ............. ^| findstr /ierg:"%sourceList%"
und in der Datei dann so:
\\A000_.*
\\A100_.*
\\A200_.*
\\BHP000_.*
Mitglied: 132351
132351 Feb 07, 2017 at 16:44:02 (UTC)
Goto Top
Danke,

leider hat es nicht die gewünschte Veränderung gebracht.
Mitglied: 132272
132272 Feb 07, 2017 at 16:45:31 (UTC)
Goto Top
Geht hier einwandfrei ...
Mitglied: 132351
132351 Feb 07, 2017 at 16:57:43 (UTC)
Goto Top
komisch,

Ich stell nochmals meinen Code rein, ev habe ich etwas übersehen.

@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 /irg:"%sourceList%"') do (  
  ECHO copy "%%~i" "%destFolder%\"  
)
PAUSE  

Liste:

\\A000_.*
\\A100_.*
\\A200_.*
\\BHP000_.*
\\BHP100_.*
Mitglied: 132272
132272 Feb 07, 2017 updated at 17:02:10 (UTC)
Goto Top
ev habe ich etwas übersehen.
jupp den Parameter e
und 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).
Mitglied: 132351
132351 Feb 07, 2017 at 17:18:53 (UTC)
Goto Top
Also "e" ist drin und das Anführungszeichen auch...
Leider null Veränderung. Nur ein Eitrag in der Liste
alles sauber mehrere Einträge kommt Müll raus.
Leerzeichen hat es keine und ich sehe auch sonst
keinen Fehler.

Ja es soll vom "Anfang" des Dateinamens gesucht werden.
Mitglied: 132272
132272 Feb 07, 2017 updated at 17:23:41 (UTC)
Goto Top
Dann hast du die Textdatei vermutlich in einem falschen Format (Unicode) gespeichert. Geht hier wie gesagt absolut problemlos.
Geht hier ja auch face-smile
Hilfe bei Batch Datei gesucht
Mitglied: 132272
132272 Feb 07, 2017 updated at 17:27:13 (UTC)
Goto Top
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  
Mitglied: 132351
132351 Feb 07, 2017 at 17:35:41 (UTC)
Goto Top
welches wäre das richtige Format?
Mitglied: 132272
132272 Feb 07, 2017 updated at 17:53:44 (UTC)
Goto Top
ANSI|ASCII
Mitglied: 132351
132351 Feb 07, 2017 at 17:58:10 (UTC)
Goto Top
Ja das passt alles habe es in ANSI, ich blick nicht mehr durch, mit nur einem Suchbegriff in der Liste
ist alles ok, mit mehreren Chaos....
Mitglied: 132351
132351 Feb 07, 2017 at 18:04:09 (UTC)
Goto Top
Kann ich den Code in einer Batchdatei aneinander hängen?
Dann würde ich für jeden Suchbegriff einen einzelnen Job
machen... Ist zwar blöd, aber würde gehen.
Mitglied: 132272
132272 Feb 07, 2017 updated at 18:04:55 (UTC)
Goto Top
Geht aber face-smile

screenshot

Und tschüss ...
Mitglied: 132351
132351 Feb 07, 2017 at 18:49:41 (UTC)
Goto Top
Danke