中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 07:18
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 用bat批处理,如何实现目标目录与源目录内容完全一致?
可打印版本  1,425 / 5
第1楼 ygqiang 发表于 2010-12-20 16:49
新手上路 发帖 13 积分 13
用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删掉

该如何加入相关的批处理命令呢?
第2楼 ygqiang 发表于 2010-12-20 16:59
新手上路 发帖 13 积分 13
”举个本地例子,你照着试下。
比如当前目录下有 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楼 ygqiang 发表于 2010-12-20 17:34
新手上路 发帖 13 积分 13
robocopy d:\work c:\000 /mir

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

但我要将d:\work用当前目录的路径(bat批处理也是放在源目录/当前目录下)替换,如何写?
第4楼 ygqiang 发表于 2010-12-20 17:40
新手上路 发帖 13 积分 13
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楼 slore 发表于 2010-12-20 21:00
铂金会员 发帖 2,478 积分 5,212
当前目录路径 "%cd%"

bat路径 "%~dp0"
第6楼 ygqiang 发表于 2010-12-21 11:12
新手上路 发帖 13 积分 13
set PWD=%~sdp0

robocopy %PWD% c:\00test /mir


用这个方法搞定。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023