2016-11-09 56 views
1

我在我的本地驱动器(笔记本电脑)中安全保存了一些文件,并在我的网络存储工作中保存了文件。BATCH - Mirrow两种方式的文件夹

我希望两个文件夹都具有相同的文件,如果我在一个文件夹中创建/删除或更改文件,另一个文件夹在使用BATCH时应该更新。

它应该使用文档上的最新版本。

所以我试了它ROBOCOPY Folder01 Folder02 /MIR /R:3 /W.20,它的工作,但只有一种方式,从Folder01到Folder02,所以如果我在Folder02中创建一个文件并使用批处理,文件被删除。

然后,我试图将两个文件夹复制到一个TEMP文件夹,然后将TEMP文件复制到两个文件夹。我用
ROBOCOPY Folder01 TEMP /XO /E /R:3 /W:20
ROBOCOPY Folder02 TEMP /XO /E /R:3 /W:20
ROBOCOPY TEMP Folder01 /MIR /R:3 /W.20
ROBOCOPY TEMP Folder02 /MIR /R:3 /W.20
这几乎是完美的,总是使用最新的文件,一切都在那里,但是当我删除FOLDER01,这在Folder02仍然存在的文件,它会来下次我使用我的BATCH。

对不起,我的英语
问候,托比亚斯

+0

如果在这两个文件夹的工作,应该怎样'robocopy'知道文件是在一个文件夹中创建还是在另一个文件夹中被删除? 'robocopy'不记得它在上次同步过程中做了什么,所以它只是识别源和目标位置的当前差异... – aschipfl

+0

我知道他不知道如果其创建一个或删除,但也许有一种方法记录文件夹内的变化会被记录下来或者用来检查文件夹的状态。 _Maybe我想要太多吗?_ – Tkay

+1

对于'robocopy',你想要的太多了;您需要搜索更强大的同步工具,或者您必须自行编写... – aschipfl

回答

0

尝试通过@Sachadee提供这种解决方案有Xcopy

:://Synchro.bat 
:://SachaDee 2014 
@echo off&cls 
:: We set Folders to synchonized 
set "Folders= C:\HackooTest E:\Backup\Folder1 E:\Backup\Folder2 E:\Backup\Folder3" 

for %%a in (%Folders%) do (
    for %%b in (%Folders%) do (
    if not "%%a"=="%%b" (
     set "VAR%%a%%b=%%a %%b" 
     ) 
    ) 
) 
for /f "tokens=2,3 delims== " %%a in ('set VAR') Do (
    echo xcopy "%%a" "%%b" /E /D /C /Y /I 
) 
pause