如何使用xcopy将多个文件复制到文件夹

7
请问如何将位于不同位置的多个目录复制到备份目录中?
源(目录)为 D:\share\t1、D:\new\t3、C:\media\t4 和 F:\save\bank,目标目录为 C:\shared\backup。
提前感谢。

2个回答

7

为什么不使用 for 循环?我喜欢它,而且它是这个古怪问题的最佳适配器:

 For %%a in (
 "D:\share\t1"
 "D:\new\t3"
 "C:\media\t4"
 "F:\save\bank"
  ) do (
xcopy /s /d "%%~a" "c:\shared\backup"
  )

2
如果您将路径用双引号括起来,并使用"%%~a",那么这将允许用户使用长路径名元素以及短路径名。 - foxidrive
非常感谢,这个for循环运行得很完美,只有一个小问题,我相信可以通过使用另一种选项来解决,但我不像你那样是专家。 - user2434611
不好意思误按了回车,非常感谢,这个for循环完美地运行了,只有一个小问题,我相信可以通过使用另一种选项来解决,但我不像你那样专业。 这个循环将那4个目录下的所有“文件”复制到目标位置,我想复制t1目录和其下面的所有内容,再次感谢。 - user2434611
@Endoro 如果我使用xcopy /d /s /e /i /h /r "d:\share\t1" "c:\shared\backup\t1",那么它可以用于一次复制,但是不知道如何在您的循环中使用它来选择源中的“t1”(文件夹名称),以便在目标中创建相同的结构。 - user2434611
如果您使用选项/d,只有新文件将覆盖旧文件,请在命令行上查看 help xcopy。而且,在我的Windows版本(XP)下, 文件夹t1已成功创建。 - Endoro
显示剩余5条评论

0
你可以使用for循环来实现这个功能。
尝试一下:
 For %%a in (D:\share\t1,D:\new\t3,C:\media\t4,F:\save\bank) do xcopy %%a c:\shared\backup

1
不需要。这是一个硬编码的文件夹名称列表。没有循环的优势(或需要);你可以用r个单独的行实现相同的效果,并使其更易于阅读和维护。只有在内容可变的情况下才需要循环。 - Ken White
@Ken White - 你说得对。我认为这很容易阅读,但我写了很多批处理文件。我更新了我的答案。 - Matt Williamson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接