![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 19:23 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教大家一个批处理的问题 |
| 可打印版本 1,782 / 15 |
| 第1楼 zzhh612 | 发表于 2007-03-22 05:53 |
| 中级用户 发帖 103 积分 278 | |
|
请教大家一个批处理的问题 请问有没有一个批处理能实现删除一个目录中的除开指定一类文件外(如*.mp3)的其它所有的文件,以及子文件夹.包括隐藏的和只读的等...
|
|
| 第2楼 ccwan | 发表于 2007-03-22 06:13 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
有这样的批处理,不过要考虑好要达到的要求,然后再写代码。
因为这个包括的可能情况太多了 |
|
| 第3楼 NaturalJ0 | 发表于 2007-03-22 06:22 |
| 银牌会员 发帖 533 积分 1,181 | |
|
把你要的文件先移出这目录,再彻底灭了它,最后重建目录,把文件移回去。
这样处理似乎简单点,可以少动些脑筋。 |
|
| 第4楼 balinger | 发表于 2007-03-22 08:28 |
| 中级用户 发帖 115 积分 356 | |
|
for /f "tokens=* delims=" %%i in ('dir /a-d /b /s c:\test\') do (
if not %%~xi==.mp3 del "%%i" /f /a /q) For /f "tokens=* delims=" %%i in ('dir /ad/b/s c:\test\ ^|sort /r') DO ( attrib -h -s -r "%%i" rd /q "%%i") [ Last edited by balinger on 2007-3-22 at 08:34 AM ] |
|
| 第5楼 zh159 | 发表于 2007-03-22 09:36 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
请自行测试
[ Last edited by zh159 on 2007-3-21 at 11:25 PM ] |
|
| 第6楼 BWSkyer | 发表于 2007-03-22 09:41 |
| 中级用户 发帖 180 积分 367 来自 重庆 | |
|
我现在对FOR还是一无所知,但是我认为可以多写点代码
cd \你要进入的目录 copy *.你要的后缀名 (也可以用xcopy) cd.. deltree 你不要的那个目录 这样应该也是一种方法吧。我不会FOR,所以只能这么想了。 |
|
| 第7楼 zh159 | 发表于 2007-03-22 09:53 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
rd /q 可以直接去处文件夹
|
|
| 第8楼 BWSkyer | 发表于 2007-03-22 09:56 |
| 中级用户 发帖 180 积分 367 来自 重庆 | |
Originally posted by zh159 at 09:53: rd不是只能删除空目录吗? 这里因该不好用吧。 |
|
| 第9楼 zh159 | 发表于 2007-03-22 10:25 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
错了,应该是rd /s /q
rd/? [ Last edited by zh159 on 2007-3-21 at 09:28 PM ] |
|
| 第10楼 zzhh612 | 发表于 2007-03-22 10:44 |
| 中级用户 发帖 103 积分 278 | |
|
四楼的balinger,谢谢你的答复 我试用了一下你给出的代码,基本上满足了我的意思,只是我还得把文件移到根目录文件夹中,再删除余下的空文件夹.这个功能也可以加入到其中吗?(就是把指定留下的文件移到第一个文件夹中,不留下子文件夹)...谢了,很佩服你.
|
|
| 第11楼 zzhh612 | 发表于 2007-03-22 10:48 |
| 中级用户 发帖 103 积分 278 | |
|
也感谢五楼zh159的答复.... 我试用了你给的代码,有一个BUG,就是没有能处理我的隐藏文件和文件夹.不过仍就谢了.愿共同学习.
|
|
| 第12楼 zh159 | 发表于 2007-03-22 11:47 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
attrib -h -s -r /s /d
这句话就可以把当前目录下所有的文件以及子文件夹、子文件夹内的的所有文件都去处“隐藏、系统、只读”属性 attrib -h -s -r /s /d c:\test\ [ Last edited by zh159 on 2007-3-21 at 10:49 PM ] |
|
| 第13楼 zzhh612 | 发表于 2007-03-22 11:52 |
| 中级用户 发帖 103 积分 278 | |
|
回12楼 我也知道你的意思,但我经过运行,确不能处理掉隐藏文件和文件夹.代码是我直接复制到文本后,再改成.BAT的.我也在找这个问题.
好像你的批处理只能放在第一个目录下才能运行正常.若修改成 attrib -h -s -r /s /d c:\test 后反而在目录下也运行不正常了. [ Last edited by zzhh612 on 2007-3-22 at 12:03 PM ] |
|
| 第14楼 zh159 | 发表于 2007-03-22 12:06 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
attrib -h -s -r /s /d c:\test\*
rd /s /q是直接删除目录+里面的文件,如有mp3文件也一样删除,所以用rd /q [ Last edited by zh159 on 2007-3-21 at 11:09 PM ] |
|
| 第15楼 zzhh612 | 发表于 2007-03-22 12:21 |
| 中级用户 发帖 103 积分 278 | |
|
回zh159 搞定了,要将第一句改为attrib -h -s -r /s /d c:\test\*.*
效果与balinger的代码一样. 谢谢.我也有所长劲了... [ Last edited by zzhh612 on 2007-3-22 at 12:24 PM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |