【问题标题】:xcopy /D flag copying all files instead of newer/newer filesxcopy /D 标志复制所有文件而不是较新/较新的文件
【发布时间】:2018-02-14 21:47:43
【问题描述】:

我正在尝试制作一个简单的批处理文件来“同步”我 onedrive 上的文件和网络驱动器上的文件之间的所有内容。

我希望能够运行批处理文件,并且 onedrive 上的任何新内容都将被复制到网络驱动器,而不是相反。

这是我的批处理文件:

@echo off
echo : XCOPY started
xcopy "D:\OneDrive - Radford University\Classwork 2017-2018\Spring 2018" "H:\Spring 2018" /E /D /C /Y /EXCLUDE:C:\exclude.txt
echo : complete

运行时,此文件似乎复制了 80-83 个文件之间的任何位置。尽管我没有对任何一个目录进行任何更改,但每次运行它都会有所不同。

我的理解是 xcopy 的 /D 标志将确保它只复制新文件或具有较新修改日期的文件。但在这种情况下,它似乎复制了我的 exclude.txt 中没有的所有内容,无论修改日期如何。

【问题讨论】:

  • 我通常只使用 /M 开关。创建或修改文件时,将设置归档属性。因此,如果您只是告诉 XCOPY 只复制这些文件,您应该没问题。无论如何,您应该考虑只使用 Robocopy。
  • /M 产生了更糟糕的结果,复制了 120 个文件。 Robocopy 看起来不错,但我找不到任何方法让它排除关键字,例如 /exclude 对 xcopy 所做的
  • 再次运行它,我敢打赌它不会复制任何东西。复制后会关闭存档属性。
  • Robocopy 有两个可用于排除的开关。 /XF 和 /XD。
  • @SajidAnsari,那么您必须拥有一台仅在您的计算机上执行操作的特殊计算机。就像我妈妈的电脑一样,直到我去那里做同样的事情,它神奇地工作。

标签: batch-file xcopy


【解决方案1】:

我认为你有两种选择:

    for /f %%G in (c:\exclude.txt) do set "_excludes=%_excludes% %%~G"
    robocopy "D:\OneDrive - Radford University\Classwork 2017-2018\Spring 2018" "H:\Spring 2018" /MT /E /MIR /XF %_excludes%

    robocopy "D:\OneDrive - Radford University\Classwork 2017-2018\Spring 2018" "H:\Spring 2018" /MT /E /MIR
    for /f %%G in (c:\exclude.txt) do del "%%~G"

您使用/L 选项进行测试,以简单地记录它会执行的操作。

【讨论】:

  • 太棒了,这行得通,除了排除功能似乎不起作用。我只尝试了第一个解决方案,因为第二个解决方案涉及复制然后删除,这似乎效率低下。
猜你喜欢
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2012-10-22
相关资源
最近更新 更多