批处理文件将具有特定扩展名的文件从多个目录复制到一个目录

48 windows xcopy batch-file command-prompt .doc

我是新手,所以忍受我...

我试图.doc使用批处理文件将我分散在一个主目录的几个子目录中的所有文件复制到另一个目录中.我已经设法filelist.txt从我想要复制的这些目录中获取所有文件(有数百个):

"C:\Main directory\sub directory" dir /b /s *.doc > "C:\Main directory\sub directory\filelist.txt"

我会用什么脚本将它们复制到一个目录中?我可以使用一些实际抓取这些文件名的代码filelist.txt并对其进行xcopies吗?

作为参考,我看了下面的问题,因为看起来它正在做我想做的事,但它对我不起作用.

使用xcopy将文件从多个目录复制到一个目录

另外,我真的很想理解这个概念,所以请为我分解代码告诉我每个项目的作用,或者至少包含一个可以解释它的链接.

Sim*_*rim 62

在批处理文件解决方案中

for /R c:\source %%f in (*.xml) do copy %%f x:\destination\
Run Code Online (Sandbox Code Playgroud)

代码就是这样的;

对于for目录中的每个文件c:\source/R匹配模式的子目录,(\*.xml)将文件名放在变量中%%f,然后将每个文件do复制文件copy %%f放到目标中x:\\destination\\

刚刚在我的Windows XP计算机上测试它,它对我来说就像是一种享受.但我输入命令提示符,所以我使用单%f变量名称版本,如上面链接的问题所述.

  • 非常感谢.我们如何保留它来自的文件夹呢?示例:将文件保存在其文件夹名称和树结构中 (5认同)

use*_*rJT 47

只需使用带递归选项的XCOPY命令即可

xcopy c:\*.doc k:\mybackup /sy
Run Code Online (Sandbox Code Playgroud)

/ s将使其"递归"

  • 但是如果一个文件是`c:`的子文件夹,那么它也会复制子文件夹和`.doc`文件....而不是没有子文件夹的文件本身 (10认同)

use*_*071 6

像这样的事情是我切换到Powershell的原因.尝试一下,很有趣:

Get-ChildItem -Recurse -Include *.doc | % {
    Copy-Item $_.FullName -destination x:\destination
}
Run Code Online (Sandbox Code Playgroud)

  • 你实际上可以做`gci -rec -inc*.doc | cp -dest X:\ Destination`,因为`Copy-Item`接受管道输入.你也可以完全摆脱`Get-ChildItem`并且只做`Copy-Item -Recurse -Include*.doc -Destination C:\ Destination`,因为`Copy-Item`有`-Recurse`和`-Include`同样. (6认同)