中国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
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: