使用批处理文件同步两个文件夹

24

我想使用批处理文件在Windows上同步2个文件夹,我正在使用如下的xcopy命令

xcopy /s /d <Original Folder> <Destination Folder>

它完美地工作了,因为我只想覆盖已修改的文件,但我有一个小问题,当我从原始文件夹中删除文件时,运行批处理文件时目标文件夹中仍存在该文件,破坏了我想要达到的同步效果...... 我认为这不能用xcopy完成,但我不知道在删除原始文件夹中的文件时该使用哪个命令。

编辑:这个程序是给不太懂PC的人使用的,所以我不想在他们的PC上安装任何东西。只需要一个简单的批处理文件来保持两个文件夹同步

解决方案:感谢Kuba Wyrostek,我得到了这个命令

robocopy <Original Folder> <Destination Folder> /e /purge

谢谢大家花时间

6个回答

21

20
为了完善你的回答,你可以简单地执行以下操作: robocopy <原始文件夹> <目标文件夹> /mir /mir 镜像一个目录树(相当于使用 /e/purge 选项)。

2
复制一个文件夹中的更新到另一个文件夹中,可使用以下XCOPY命令:
C:\> XCOPY C:/SOURCE D:/DESTINATION /E /D /C /Y

上面示例中使用的标记的含义如下:
  • /E 使所有文件夹和子文件夹都被复制
  • /D 进行日期比较,只复制新于目标文件的项目。如果目标文件比源文件旧或没有该文件,则会进行复制。
  • /C 告诉XCOPY在遇到错误时继续执行 - 通常会出现只读文件或受保护权限的文件等错误
  • /Y 告诉XCOPY抑制提示确认您的操作,这对于创建自动化脚本或计划任务是必要的

这并没有回答原问题。 - Mikhail
@geisterfurz007 你确定这不是原创的吗?那篇文章没有日期,但最早的 Disqus 评论是在这篇文章之后10个月。如果你认为一篇文章是剽窃的,请举报给管理员。 - Ryan Bemrose
@RyanBemrose 哎呀,我干了什么 >.> 这是个巧妙的小细节和一个我甚至没有想到的点子。我撤回了我的评论和踩踏。感谢你的提醒和对潜在未来情况的提示 :) - geisterfurz007

2

我知道这已经有些过时了,但我有一个问题。是否可以通过正确的xcopy命令来完成此操作。

文件夹1:c:\workingFolder\"这里是内容"

文件夹2:d:\workingFolderSync\"这里是内容"

以下是批处理文件:

xcopy "c:\workingFolder\*.*" "d:\workingFolderSync\" /i /s /d /y
xcopy "d:\workingFolderSync\*.*" "c:\workingFolder\" /i /s /d /y
pause

(我通常在测试并确定批处理程序可以正常工作后删除暂停。)但这只会将文件夹中的内容复制到另一个文件夹中,如果源文件夹中的内容更新,则它会查看目标文件夹并将目标文件夹中的内容复制回源文件夹。这就实现了同步所做的事情,除了实时监控修改文件外。创建适当的任务计划可以在特定时间运行此命令,以几乎完美地实现同步。您还可以在计算机上进行修改之前和之后运行此操作。如果您使用网络驱动器进行同步,则可以在第二台计算机上执行相同的操作。


1

你的方法存在两个主要问题:

  • 从一个文件夹中删除的文件将在下一次运行xcopy时由另一个文件夹中剩余的副本重新恢复
  • 重命名文件可能会导致混乱的结果。

1
这怎么算是一个答案? - Christian

0
我建议使用robocopy,如果网络断开,复制会继续进行。而且它比xcopy更快。
将以下内容保存在批处理或命令文件中,以便可以安排其运行。
set source=<Original Folder>
set target=<Destination Folder>

robocopy /mir %source% %target%

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