0

在 Windows 环境中,只有批处理文件和 VBScript 可供您使用,您将如何编写它?

find -name '*.ext' -exec cp --parents {} destination/ \;

或者这样说:

  • ext在当前文件夹中递归查找某些文件名模式(以上面示例中调用的扩展名结尾),
  • 将这些文件中的每一个复制到目标文件夹(无论在哪里),保留目录树结构(或创建任何缺少的中间目录),就像在当前文件夹中一样。
4

2 回答 2

2

这应该有效:

for /r %%a in (*.cmd) do xcopy %%a C:\DESTINATION%%~pa

请注意,它永远不DESTINATION应该是您尝试从中复制的目录的子目录,否则会进入递归循环复制它已经复制的文件,从而创建越来越长的目录路径(不要问我怎么知道)。for /r

您可以使用使其更加健壮xcopy /c(即使发生错误也可以继续复制)。您可能还想看看xcopy /?那里是否还有其他有价值的东西(/q/r/o等)。

于 2009-09-17T15:43:17.080 回答
0

编辑: 我的错,我错过了 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
于 2009-09-17T15:36:01.047 回答