在 Windows 环境中,只有批处理文件和 VBScript 可供您使用,您将如何编写它?
find -name '*.ext' -exec cp --parents {} destination/ \;
或者这样说:
ext
在当前文件夹中递归查找某些文件名模式(以上面示例中调用的扩展名结尾),- 将这些文件中的每一个复制到目标文件夹(无论在哪里),保留目录树结构(或创建任何缺少的中间目录),就像在当前文件夹中一样。
在 Windows 环境中,只有批处理文件和 VBScript 可供您使用,您将如何编写它?
find -name '*.ext' -exec cp --parents {} destination/ \;
或者这样说:
ext
在当前文件夹中递归查找某些文件名模式(以上面示例中调用的扩展名结尾),这应该有效:
for /r %%a in (*.cmd) do xcopy %%a C:\DESTINATION%%~pa
请注意,它永远不DESTINATION
应该是您尝试从中复制的目录的子目录,否则会进入递归循环复制它已经复制的文件,从而创建越来越长的目录路径(不要问我怎么知道)。for /r
您可以使用使其更加健壮xcopy /c
(即使发生错误也可以继续复制)。您可能还想看看xcopy /?
那里是否还有其他有价值的东西(/q
、/r
、/o
等)。
编辑: 我的错,我错过了 cp 命令中的 --parents 标志......如下所示的 xcopy 只会重新创建向下路径,而不是当前目录“上方”的目录。
我 [现在] 相信xcopy会 [不] 做这个伎俩 [单独。但是与格兰特瓦格纳的“for /r”技巧一起创造奇迹]。
xcopy [some_path]*.ext [some_otherpath]\final_directory /E
(or /S, above, if you don't want empty directories)
the elements within brackets, some_path and some_otherpath are optional