【发布时间】:2012-03-02 04:57:59
【问题描述】:
我需要将多个目录从一个位置复制到另一个位置。因此,将会有多个xcopy 语句,一个接一个。
每个文件夹中的文件数量巨大。有什么方法可以并行运行这些xcopy 语句吗?我能想到的一个选项是 - 在单独的批处理文件中调用每个 xcopy,并使用 @start 而不是 @call 调用这些批处理文件。
还有其他选择吗?
【问题讨论】:
标签: batch-file command dos xcopy
我需要将多个目录从一个位置复制到另一个位置。因此,将会有多个xcopy 语句,一个接一个。
每个文件夹中的文件数量巨大。有什么方法可以并行运行这些xcopy 语句吗?我能想到的一个选项是 - 在单独的批处理文件中调用每个 xcopy,并使用 @start 而不是 @call 调用这些批处理文件。
还有其他选择吗?
【问题讨论】:
标签: batch-file command dos xcopy
您可以直接启动 xcopy,例如 start xcopy [parameters]。这允许您并行运行许多 xcopy 实例。
顺便说一句:您尝试过 robocopy 吗?它包含在所有最近的 Windows 版本中,并提供比 xcopy 更多的选项(有时还提供性能)。
但通常并行复制多个目录比较慢(至少当您从一个驱动器复制到另一个驱动器时),因为它会强制源驱动器在并行复制作业之间寻找而不是顺序读取文件。
【讨论】:
/MT[:number] 对吗?实际上,我需要在 Windows XP SP3 上执行此操作,因此需要明确获取 Robocopy。但是,我并没有完全理解它的/MT 用法。能详细点吗?
/MT:100,robocopy 最多可以并行复制 100 个文件。我不建议这样做 - 8 就足够了。因此,如果您确实选择了 robocopy 而不是 xcopy,请按顺序调用它。它将并行复制第一个目录,然后是第二个目录,依此类推。
/MT:%NUMBER_OF_PROCESSORS% 和/MT:100 从庞大的远程目录中测量了ROBOCOPY 的构建输出,后者在四核i5-上的平均执行速度66% 6500。我希望我很久以前就知道这种级别的灵活性!