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

问题描述 投票:0回答:6

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

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

它工作得很好,因为我只想覆盖修改过的文件,但我有一个小问题,当我从原始文件夹中删除文件时,当我运行批处理文件时,该文件仍保留在目标文件夹中,从而破坏了同步想要实现...我认为这不能用 xcopy 完成,但我不知道应该使用哪个命令,以防我删除原始文件夹中的文件。

编辑:这个程序是为那些不了解很多电脑的人准备的,所以我不想在他们的电脑上安装任何东西。只需要一个普通的批处理文件来保持 2 个文件夹同步

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

robocopy /e /purge

谢谢大家的宝贵时间

batch-file
6个回答
21
投票

xcopy
没有这样的选项。您的选择是:

rsync - http://rsync.samba.org

robocopy - http://technet.microsoft.com/en-us/library/cc733145.aspx


20
投票

要完善您的答案,您可以简单地执行以下操作:

robocopy <Original Folder> <Destination Folder> /mir

/mir
镜像目录树(相当于
/e
/purge
)。


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

(我通常在测试并知道批处理有效后删除pause。) 但这只会将内容从文件夹复制到另一个较新的文件夹。 然后,它会查找目标文件夹,如果内容较新,则将目标文件夹中的内容复制回源。这再现了同步的作用,除了实时监控修改的文件之外。创建适当的任务计划实际上可以实现在特定时间运行此命令以几乎完美地重现同步。您还可以在机器上修改之前和机器上修改之后运行此命令。如果您使用网络驱动器进行同步,甚至可以在第二台计算机上执行相同的操作。


2
投票

用于将更新从一个文件夹复制到另一个文件夹的 XCOPY 命令如下:

C:\> XCOPY C:/SOURCE D:/DESTINATION /E /D /C /Y

上例中使用的标志具有以下含义:

  • /E
    导致所有文件夹和子文件夹被复制
  • /D
    导致进行日期比较,仅复制比 DESTINATION 项目更新的项目。如果 DESTINATION 较旧,或者不包含该文件,则会复制该文件。
  • /C
    告诉 XCOPY 在遇到错误时继续 - 通常错误发生在只读文件或具有受保护权限的文件中
  • /Y
    告诉 XCOPY 取消提示您进行确认,如果您打算创建自动化脚本或计划任务,这是必要的

1
投票

你的方法有两个主要问题:

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

0
投票

我建议使用robocopy,如果网络断开,复制会恢复。而且比 xcopy 更快。

将以下行保存在 bat 或 cmd 文件中,以便您可以安排其运行

set source=<Original Folder>
set target=<Destination Folder>

robocopy /mir %source% %target%
© www.soinside.com 2019 - 2024. All rights reserved.