中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 05:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用bat批处理,如何实现目标目录与源目录内容完全一致? 查看 1,217 回复 5
楼 主 用bat批处理,如何实现目标目录与源目录内容完全一致? 发表于 2010-12-20 16:49 ·  中国 山东 青岛 电信
新手上路
积分 13
发帖 13
注册 2010-04-16 21:35
16年会员
UID 164766
性别 男
状态 离线
请教bat批处理,实现同步备份功能!

现在源目录下有很多文件/文件夹,要同步备份到目标目录下。


用类似下面的命令是可以实现的:xcopy "*.*" "c:\000" /e/y/d/v/i/h/s/c/q

但如果目标目录下面存在aa.txt bb.doc等文件,而源目录下没有这些文件。
如何用批处理命令实现:同步备份到目标目录以后,自动将aa.txt bb.doc文件删除呢?


有没有什么批处理可以实现:删除目标目录中存在,而源目录中不存在的文件呢?


比如:命令xcopy D:\test\temp\*.* c:\000\ /s/h/d/y 可以使2个文件夹中的文件保持一致,当 D:\test\temp\下的文件有更新的话会copy这些文件到c:\000\

但是如果D:\test\temp\下面删除了一个文件(如1.txt),我也想把c:\000\下的1.txt删掉

该如何加入相关的批处理命令呢?
2 发表于 2010-12-20 16:59 ·  中国 山东 青岛 电信
新手上路
积分 13
发帖 13
注册 2010-04-16 21:35
16年会员
UID 164766
性别 男
状态 离线
”举个本地例子,你照着试下。
比如当前目录下有 A B 两目录
要删除在 A 目录中有,且在 B 目录中没有的文件。
A 相当于本地
B 相当于服务器
你先 dir B /b >B.lst 把 B 中的内容存为文件
然后 for /f "delims=" %%i in (dir A /b) do ( find "%%i" B.lst || del "A\%%i" )
意思是取 A 目录下的所有文件,先取其中一个,去 B 列表中找,如果找不到就删了它,然后再取 A 中的下一个。。。 “


论坛搜索到这个,但自己不太懂,如何修改呢?

我的要求是:
源目录是当前目录下的文件、文件夹(最好bat批处理也是放在源目录下)
目标目录是c:\000

实现将源目录完全同步到目标目录。
如果目标目录下有多余的文件、文件夹,就删除。
3 发表于 2010-12-20 17:34 ·  中国 山东 青岛 电信
新手上路
积分 13
发帖 13
注册 2010-04-16 21:35
16年会员
UID 164766
性别 男
状态 离线
robocopy d:\work c:\000 /mir

这个命令好像可以实现这种功能.

但我要将d:\work用当前目录的路径(bat批处理也是放在源目录/当前目录下)替换,如何写?
4 发表于 2010-12-20 17:40 ·  中国 山东 青岛 电信
新手上路
积分 13
发帖 13
注册 2010-04-16 21:35
16年会员
UID 164766
性别 男
状态 离线
robocopy C:\Docume~1\Admini~1\桌面\u-2G c:\000 /mir

已经解决。


现在的关键问题是:

如何用当前路径代替:C:\Docume~1\Admini~1\桌面\u-2G呢?

[ Last edited by ygqiang on 2010-12-20 at 18:14 ]
5 发表于 2010-12-20 21:00 ·  中国 北京 263网络通信电信数据中心
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
当前目录路径 "%cd%"

bat路径 "%~dp0"
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
6 发表于 2010-12-21 11:12 ·  中国 山东 青岛 联通
新手上路
积分 13
发帖 13
注册 2010-04-16 21:35
16年会员
UID 164766
性别 男
状态 离线
set PWD=%~sdp0

robocopy %PWD% c:\00test /mir


用这个方法搞定。
论坛跳转: