使用 xcopy 或 copy 来备份文件?

使用 xcopy 或 copy 来备份文件?

我有一个本地驱动器,其中包含每个用户的目录:

c:\用户1\
c:\用户2\
c:\用户3\

我有一个包含相同目录树的远程驱动器(通过共享):

f:\用户1\
f:\用户2\
f:\用户3\

每个目录内可以有任意数量的文件,但它们都是.txt。我一直在尝试创建一个批处理文件,它可以在本地目录上进行迭代,并将比X时间戳更新的文件复制到f:上的相应目录中。

有没有办法使用 xcopy 或 copy 加上一些批处理魔法来实现这一点?

谢谢!

编辑:为避免混淆:我需要解析用户目录(可以有任何名称),获取比上次复制的文件更新的文件并将它们复制到 F:\

复制这不是我想要做的。更像是:

for /f "tokens=*" %%a IN ('dir /b c:\users\*') do call dobackup.bat "%%a"

或类似

答案1

Robocopy 是您的好朋友。它有一个标志,可以完全按照您的要求执行操作。

robocopy c:\ f:\ /mir /r:1 /sec

这将执行镜像复制,在继续之前重试打开文件一次,并且还将复制安全性。镜像复制还将从 F:\ 中删除不再存在于 C:\ 上的文件,这是 xcopy 无法做到的。此外,在第一次同步后,它只会复制较新的文件。

如果由于某种原因 robocopy 不可行,您可以使用 xcopy 来实现。

xcopy C:\*.* F:\*.* /S/E/H/D

这会将整个 C:\ 结构复制到 F:\,复制隐藏文件,并且只复制较新的文件。但它不会从 F:\ 中删除 C:\ 中存在的文件。

编辑:

也许这会满足你的要求:

 for /D %D in (C:\User*\) do xcopy  C:\User%D\*.* F:\User%D /s /e /d 08-01-2010

这将遍历包含用户的所有目录,并复制 8 月 1 日之后的文件。

答案2

好的,如果我将批处理文件放在 C:\users\ 中,那么

for /D %%a IN (*) do call robocopy %%a\ f:\%%a\ *.txt /mir /r:1 /sec

作品

相关内容