![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 05:34 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教批处理删除目录的问题 |
| 可打印版本 2,429 / 20 |
| 第1楼 9299 | 发表于 2007-06-18 10:28 |
| 初级用户 发帖 20 积分 46 | |
|
请教批处理删除目录的问题 原本利用批处理在各驱动设备下建了一些目录,在没有用attrib给myCatalogue.txt列表中的目录+s +h +r前能用以下批处理完全删除(包括后面的子目录 abc):
@echo off for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do ( if not exist %%a:\nul goto :eof echo %%a drive OK ! for /f %%b in (myCatalogue.txt) do ( IF EXIST %%b\nul goto 1 echo 目录不存在! rem md %%a:\%%b rem md %%a:\%%b\abc\ :1 echo 目录存在删除! rd %%a:\%%b\abc\ rd %%a:\%%b ) ) pause 但用attrib给myCatalogue.txt列表中的目录+s +h +r后就只能删除各目录下面的子目录abc,却不能删除myCatalogue.txt列表中的目录,提示"文件名,目录名或卷标语法不正确".里面增加一行 attrib %%a:\%%b -s -h -r又不能运行. 恳请各位高手指点,到底错在哪里?应该怎样写才对? |
|
| 第2楼 Climbing | 发表于 2007-06-18 10:53 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
自己调试一下,看到底错在哪里了。
首先这条命令就有问题: IF EXIST %%b\nul goto 1 没有加入盘符,应该是类似这样的: if exist %%a:\%%b\nul goto 1 |
|
| 第3楼 9299 | 发表于 2007-06-18 11:04 |
| 初级用户 发帖 20 积分 46 | |
|
加入了盘符情形还是一样,"文件名,目录名或卷标语法不正确"
|
|
| 第4楼 Climbing | 发表于 2007-06-18 11:08 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
这种情况下只有你自己能够调试出到底错在哪里了。到底文件名或者目录名的语法是如何不正确的?
|
|
| 第5楼 9299 | 发表于 2007-06-18 11:09 |
| 初级用户 发帖 20 积分 46 | |
|
大侠,就是说原来这个批处理都能正常运行,是在每个目录(除下面的abc)加了+s +h +r后就出现这种问题了.
|
|
| 第6楼 Climbing | 发表于 2007-06-18 11:11 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
原来的能够正常运行,并不意味着你原来的批处理就是正确的,至少我看就有问题。
你将开始的echo off命令去掉,然后看一下具体的命令行到底错在哪里了。 |
|
| 第7楼 9299 | 发表于 2007-06-18 11:13 |
| 初级用户 发帖 20 积分 46 | |
|
好的,我试试
|
|
| 第8楼 9299 | 发表于 2007-06-18 11:19 |
| 初级用户 发帖 20 积分 46 | |
|
c:\>rd %a:\%b
文件名,目录名或卷标语法不正确 另:我的目录名是autorun.inf,auto.inf等 |
|
| 第9楼 Climbing | 发表于 2007-06-18 11:26 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
在rd %%a:\%%b前增加一行:
attrib -s -r -h %%a:\%%b 然后再试一下。 |
|
| 第10楼 9299 | 发表于 2007-06-18 11:29 |
| 初级用户 发帖 20 积分 46 | |
|
c:\>attrib -s -r -h %%a:\%%b
找不到路径 - c:\%a: c:\>rd %a:\%b 文件名,目录名或卷标语法不正确 |
|
| 第11楼 9299 | 发表于 2007-06-18 11:41 |
| 初级用户 发帖 20 积分 46 | |
|
完整过程:
c:\>scml.bat c:\>for %a in (c d e f g h i j k l m n o p q r s t u v w x y z) do ( if not exist %a:\nul goto :eof echo %a drive OK ! for /f %b in (myCatalogue.txt) do ( IF EXIST %a:\%b\nul goto 1 echo 目录不存在! rem md %a:\%b rem md %a:\%b\abc\ :1 echo 目录存在删除! rd %a:\%b\abc\ attrib -s -r -h %a:\%b rd %a:\%b ) ) c:\> ( if not exist %a:\nul goto :eof echo c drive OK ! for /f %b in (myCatalogue.txt) do ( IF EXIST c:\%b\nul goto 1 echo 目录不存在! rem md c:\%b rem md c:\%b\abc\ :1 echo 目录存在删除! rd c:\%b\abc\ attrib -s -r -h c:\%b rd c:\%b ) ) c drive OK ! c:\>(IF EXIST auto.inf\nul goto 1 echo 目录不存在! rem md c:\auto.inf rem md c:\auto.inf\abc\ :1 echo 目录存在删除! rd c:\auto.inf\abc\ attrib -s -r -h c:\auto.inf rd c:\auto.inf ) c:\>echo 目录存在删除! 目录存在删除! c:\>attrib -s -r -h %a:\%b 找不到路径 - c:\%a: c:\>rd %a:\%b 文件名,目录名或卷标语法不正确 c:\>pause [ Last edited by 9299 on 2007-6-18 at 11:50 AM ] |
|
| 第12楼 9299 | 发表于 2007-06-18 15:01 |
| 初级用户 发帖 20 积分 46 | |
|
问题还没解决.不过先谢谢Climbing
大侠! |
|
| 第13楼 Climbing | 发表于 2007-06-18 15:37 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
你把完整的批处理及那个mycatalogue.txt传上来。我觉得你的批处理写得有问题。否则不可能出现这种错误:
c:\>attrib -s -r -h %a:\%b 找不到路径 - c:\%a: 错误中的c:是从哪里来的? |
|
| 第14楼 9299 | 发表于 2007-06-18 15:55 |
| 初级用户 发帖 20 积分 46 | |
|
上传不上来,我直接给显算了
myCatalogue.txt: auto.inf autorun.inf autorun.pif ghost.pif 主要目的防U盘病毒! |
|
| 第15楼 9299 | 发表于 2007-06-18 15:58 |
| 初级用户 发帖 20 积分 46 | |
|
啊,忘了,还有最前两行是实验用的
aa.inf bb.pif |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |