robocopy 首先复制哪个文件?

robocopy 首先复制哪个文件?

在我的 C# 应用程序中,我使用 robocopy 并选择/s复制子文件夹。

假设我有上个月的文件和文件夹。

它将首先复制哪个文件,最新的文件还是最旧的文件?

有什么方法可以指定它应该先复制旧文件或反之亦然?

答案1

如果你想先复制较新的(最近的)文件,你可以使用 Robocopy/MAXAGE:n/MINAGE:n命令行选项。

您必须运行 Robocopy 2 次或更多次(取决于您想要通过文件的“年龄”来控制文件复制顺序的程度)。

以下是关于/MAXAGE:n/MINAGE:n命令行选项:

/MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
/MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
    (If n < 1900 then n = n days, else n = YYYYMMDD date).

例如,在最简单的情况下,您可以先复制最多 1 天前的文件,然后在完成后复制所有至少 1 天前的文件。以下是此(第一个)示例的 2 个 Robocopy 命令行:

First run of Robocopy:
    robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:1
Second run of Robocopy:
    robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MINAGE:1

如果您想要更多控制,可以结合使用这两个选项。例如:

  1. 首先复制最多 1 天前的所有文件
  2. 然后复制至少 1 天前、最多 2 天前的文件
  3. 然后复制至少 2 天前、最多 3 天前的文件
  4. 然后复制至少 3 天前、最多 5 天前的文件
  5. 然后复制至少 5 天前的文件(所有剩余的文件)

以下是此(第二个)示例的 Robocopy 命令行:

robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:1
robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:2 /MINAGE:1
robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:3 /MINAGE:2
robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:5 /MINAGE:3
robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MINAGE:5


如果你想查看 Robocopy 复制文件的顺序,你可以使用/L选项:

robocopy "C:\source\path" "C:\dest\path" /S /COPY:DAT /DCOPY:T /MAXAGE:1 /L

随着/L选项,Robocopy 将只列出“会”被复制,但实际上不会复制任何文件。

答案2

robocopy 将首先复制它首先从操作系统获取的文件和目录。如果您想要特定的顺序 - 您必须注意这一点:

  • 列出你的文件
  • 按日期排序
  • 为每个文件调用 robocopy

这应该可以解决你的问题。

相关内容