并行复制使用xcopy

8
我需要将多个目录从一个位置复制到另一个位置。因此,需要多个xcopy语句依次执行。
每个文件夹中的文件数量都很大。有没有什么方法可以并行运行这些xcopy语句?我能想到的一个选项是- 在单独的批处理文件中调用每个xcopy,并使用@start而不是@call调用这些批处理文件。
还有其他选择吗?
1个回答

10
您可以直接启动xcopy,像这样start xcopy [parameters]。这样可以并行运行多个xcopy实例。
顺便说一下:您尝试过robocopy吗?它包含在所有最新的Windows版本中,并提供比xcopy更多的选项(有时会提高性能)。
但是通常来说,在并行复制多个目录时速度会变慢(至少在从一个驱动器复制到另一个驱动器时),因为它会强制源驱动器在并行复制作业之间进行寻道,而不是按顺序读取文件。

我还没有尝试使用Robocopy。它是使用/MT[:number]对吧?实际上,我需要在Windows XP SP3上执行此操作,因此需要明确获取Robocopy。然而,我并没有完全理解它的/MT用法。你能否详细说明一下? - Pramod Karandikar
2
默认情况下,robocopy已经使用8个线程并行执行某些操作。这意味着您可以使用robocopy并行复制目录中的所有文件。例如,如果您指定/MT:100,robocopy将并行复制多达100个文件。我不建议这样做-8就足够了。因此,如果您确实选择了robocopy而不是xcopy,请按顺序调用它。它将并行复制第一个目录,然后是第二个目录,依此类推。 - Simon
可以确认Simon的评论。我使用/MT:%NUMBER_OF_PROCESSORS%/MT:100分别测量了一个庞大的远程目录中的ROBOCOPY构建输出,后者在四核i5-6500上平均表现出_66%更快_。我希望很久以前就知道这种灵活性! - kayleeFrye_onDeck

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