![使用 xcopy 或 copy 来备份文件?](https://linux22.com/image/520534/%E4%BD%BF%E7%94%A8%20xcopy%20%E6%88%96%20copy%20%E6%9D%A5%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个本地驱动器,其中包含每个用户的目录:
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
作品