将文本文件中与字符串匹配的文件从具有文件夹结构的许多子文件夹复制到另一个目标文件夹

时间:2017-03-05 20:11:36

标签: windows batch-file xcopy

我在文件夹结构中有很多图像文件,如下所示:

/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
[...]

现在我有一个 filelist.txt ,其中包含一些这些图像文件的列表,如下所示:

PictureRANDOMNAME1, PictureRANDOMNAME3, [...]

我想在保留文件夹结构的同时,将所有子文件夹中与文本文件列表中的字符串匹配的所有图像复制到新目的地(不移动它们)。

也许我需要一个批处理文件,我只需将其复制到包含所有子文件夹的主文件夹中,再加上filelist.txt,执行它并获得相同的文件夹结构,但只能在另一个目的地上找到所需的文件。

关于这一点的特别之处可能是路径和变音符号中的空格。

抱歉我的英语不好。老实说,我尽我所能。也许一些母语人士可以帮助编辑更容易理解。

1 个答案:

答案 0 :(得分:0)

@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从文件中获取行。由于每一行都以逗号分隔,因此%%b将对该行上的每个名称执行xcopy

如果您愿意,可以将>nul添加到xcopy行的末尾以取消报告。

请注意,/表示在winbatch中切换 - \是目录分隔符。

此程序未经测试。我建议你在一个小的虚拟子目录树上尝试它来验证它,然后再依赖它来获取你的实时数据。