Bash &引用;cp——父母”;在批处理文件/VBScript中
在Windows环境中,只有批处理文件和VBScript可供使用,您如何编写此文件Bash &引用;cp——父母”;在批处理文件/VBScript中,bash,vbscript,copy,batch-file,parents,Bash,Vbscript,Copy,Batch File,Parents,在Windows环境中,只有批处理文件和VBScript可供使用,您如何编写此文件 find -name '*.ext' -exec cp --parents {} destination/ \; 或者这样说: 在当前文件夹中递归查找某些文件名模式(在上面的示例中,以名为ext的扩展名结尾) 将这些文件复制到目标文件夹(无论在何处),保留目录树结构(或创建任何缺少的中间目录),如当前文件夹中所示 编辑: 我的错,我错过了cp命令中的--家长标志。。。如下所示的xcopy将只重新创建向下路径,
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
,等等)。请精确到什么程度?我尝试了/t和/I选项,但没有成功。/t
只创建目录结构,但不复制任何内容,而/I
只是更改目标的语义。我想您可能需要/S
标志。因此,沿着xcopy*.ext destination/S
/S的思路,从上到下都可以工作,不是吗?我只需要复制具有给定模式及其目录树结构的文件。这正是bash命令所做的。为了更好地理解这一点,想象一下当前文件夹中有数千种不同类型的文件,但您只需要这些特定的文件。当路径达到32k个字符时,它将最终停止:-)+1就像一个符咒,Grant!只有傻瓜才会在目的地放一个循环引用,对吗?哈哈。它工作得很好(差不多了),谢谢格兰特!但在目标中创建的目录树结构实际上是文件的绝对路径。有没有办法只创建相对路径?@Provated:如果你需要的是从当前目录到新位置的相对目录,保留路径,那么[mjv的答案][xcopy/s*.cmd C:\DESTINATION
只要在源目录中运行它就可以工作。如果从另一个目录xcopy/s[source\u dir]\*.cmd C:\DESTINATION
运行它,就会得到C:\DESTINATION\[source\u dir]\directories\u和\u文件
。
for /r %%a in (*.cmd) do xcopy %%a C:\DESTINATION%%~pa