windows - Kopier filer, der matcher streng (er) i en tekstfil ud af mange undermapper med mappestruktur til en anden destinationsmappe

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har mange billedfiler i en mappestruktur som denne:


/Foldername1 (hohe Auflösung)/PictureRANDOMNAME1-FB.jpg
/Foldername1 (hohe Auflösung)/PictureRANDOMNAME2-FB.jpg
[...]
/Foldername2 (hohe Auflösung)/PictureRANDOMNAME1-SW.jpg
/Foldername2 (hohe Auflösung)/PictureRANDOMNAME2-SW.jpg
[...]
/Foldername3 (hohe Auflösung)/PictureRANDOMNAME1-SP.jpg
/Foldername3 (hohe Auflösung)/PictureRANDOMNAME2-SP.jpg
[...]


Nu har jeg en filelist.txt med en liste over nogle af disse billedfiler, som denne:


PictureRANDOMNAME1, PictureRANDOMNAME3, [...]


Jeg vil gerne kopiere alle billeder, der matcher strengen (e) i tekstfillisten ud af alle undermapper til en ny destination (ikke flytte dem), mens mappestrukturen holdes nede.


Måske har jeg brug for en batchfil, som jeg lige kopierer til hovedmappen med alle undermapper, sammen med en filelist.txt, udfører den og får den samme mappestruktur, men kun med de ønskede filer på en anden destination.


Specielt om dette kan være mellemrummet i stierne og umlauterne.


Undskyld mit dårlige engelsk. Jeg prøvede ærligt mit bedste. Måske kan nogle indfødte hjælpe redigeringen for at være mere forståelig.

Bedste reference


@echo off
setlocal
:: This copies the tree structure from sourcedir to destdir
xcopy /t /e sourcedir destdir
:: This reads the filenames and copies the required files
for /f "delims=" \%\%a in (filelist.txt) do (
 for \%\%b in (\%\%a) do xcopy /s /e sourcedir\%\%b* destdir
)


\%\%a erhverver linjerne fra filen. Da hver linje er adskilt fra hinanden, vil \%\%b udføre xcopy på hvert navn på linjen.


Du kan tilføje >nul til slutningen af ​​xcopy linjerne for at undertrykke rapportering, hvis du vil.


Vær opmærksom på at / angiver en switch i winbatch - er directory-separatoren.


Denne procedure er ikke testet. Jeg foreslår, at du prøver det mod et lille dummy underkatalog træ for at bekræfte det, før du stoler på det for dine live data.