中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用bat批处理,如何实现目标目录与源目录内容完全一致?
作者:
标题: 用bat批处理,如何实现目标目录与源目录内容完全一致? 上一主题 | 下一主题
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『楼 主』:  用bat批处理,如何实现目标目录与源目录内容完全一致?

请教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删掉

该如何加入相关的批处理命令呢?

2010-12-20 16:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 2 楼』:  

”举个本地例子,你照着试下。
比如当前目录下有 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

实现将源目录完全同步到目标目录。
如果目标目录下有多余的文件、文件夹,就删除。

2010-12-20 16:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 3 楼』:  

robocopy d:\work c:\000 /mir

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

但我要将d:\work用当前目录的路径(bat批处理也是放在源目录/当前目录下)替换,如何写?

2010-12-20 17:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 4 楼』:  

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 ]

2010-12-20 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

当前目录路径 "%cd%"

bat路径 "%~dp0"



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-12-20 21:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 6 楼』:  

set PWD=%~sdp0

robocopy %PWD% c:\00test /mir


用这个方法搞定。

2010-12-21 11:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: