![]() |
中国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 |