【发布时间】:2017-05-31 19:03:03
【问题描述】:
我正在运行 Windows,并且我有大量 .pdf 文件(数千个)都存储在一个大目录中,然后所有这些文件都以各种方式组织到该主目录中的各种子目录中。
例如:
K:\OriginalDirectory [main directory]
K:\OriginalDirectory\2010 [subdirectory 1]
K:\OriginalDirectory\2011 [subdirectory 2]
K:\OriginalDirectory\2013 [subdirectory 3]
我的问题:我需要将大约 1900 个这些文件复制并粘贴到一个新目录中。 Windows 的“查找”功能不允许我这样做,因为尝试使用“或”运算符组合 1900 个唯一文件名超出了“查找”的 255 个字符限制。
所以我使用命令行尝试了以下操作(基于另一个 StackOverflow 答案):
C:\OriginalDirectory>for %I in (doc1.pdf doc2.pdf doc3.pdf) do copy %I C:\SomeOtherDirectory
这有效,但不搜索子目录。此外,它需要我输入所有 1900 个文件名,这并不理想。
有没有办法让我只使用在我的主目录中搜索所有子目录并且不需要我输入 1900 个文件名的命令行来完成这项任务?
【问题讨论】:
-
是否要保留目录结构,但在复制时跳过非 PDF 文件?看看
robocopy(它是Windows 最新版本附带的工具),它在复制目录树时应用文件名过滤器(/XF和/XD)。 -
不需要保留目录结构——我只需要移动一大组文件,所有文件都随机存储在各个子目录中。此目录/子目录中的所有文件都是 PDF。 Robocopy 看起来不错,但我没有找到不必输入单个文件名的方法(我不需要移动所有文件,只需移动 7000 个左右文件中的 1900 个)。
-
Robocopy 文档:"File 指定要复制的文件。您可以使用通配符(
*或?) " -
因此,无论您有什么规则来决定是否应该复制文件,都可以使用通配符来包含,
/XF使用另一个通配符来排除。 -
唉,目录/子目录中的每个文件(需要移动的和不需要移动的)都这样命名:3445604401216.pdf、3445602510940.pdf、3445603608022.pdf , 等等。决定移动的唯一规则是该文件名是否在我的列表中。
标签: windows