中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for遍历目录,再用if判断,出现错误,望高手来解惑
作者:
标题: for遍历目录,再用if判断,出现错误,望高手来解惑 上一主题 | 下一主题
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『楼 主』:  for遍历目录,再用if判断,出现错误,望高手来解惑

我的原意是这样的,我的E盘下的“流行音乐”这个文件夹里面有我的非常多的音乐。我明确知道有一首歌为“飘雪.mp3",我想删除它,我用这样的命令去删,
E:\>for /r %a in (*.mp3) do @echo %a if exist 飘雪.mp3 del 飘雪.mp3
我知道这个语句肯定有错误的地方(因为运行过后,没有成功删除这首歌曲),但我想知道是什么地方错了,望高手解答,还有正确的应该怎么写?
声明:我这样做不单单是为了删这个文件,关键是想熟悉命令,所以请想灌水的朋友不要说:“楼主,你直接用del /f /s /q 飘雪.mp3就好了。“我不想听到这样的话。
谢谢,能令我豁然开朗,我一定会给他(她)加分,虽然我最多只能加两分,但我肯定会加,没能帮我解决问题,我也一样谢谢你您的援手,在我的学习路上帮我过我的人,我都会心怀感激。



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-1-16 10:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 2 楼』:  

1,首先if exist 飘雪.mp3 del 飘雪.mp3这句没有运行,而是被echo出来了,你应该明白原因了,你要想运行这句,要在echo 和if这两句之间加上&来运行两个命令.
2,if exist 飘雪.mp3 del 飘雪.mp3 这句始终是在判断E盘根目录有没有飘雪.mp3,而不是你扁历的目录,这是因为if exist 的特性,你要判断哪个目录有没有指定的文件必须写好绝对路径,即完整的文件路径.
3.正确写法:
for /r %a in (*.mp3) do @echo %a & if %~nxa==飘雪.mp3 del %a

   此帖被 +2 点积分    点击查看详情   
评分人:【 oilio 分数: +2  时间:2007-1-18 02:24




QQ:419503077
2007-1-16 10:46
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  


  可以这样:
for /f "delims=" %a in ('dir /s/b/a-d E:\飘雪.mp3 2^>nul') do @if exist "%a" del "%a"


   此帖被 +2 点积分    点击查看详情   
评分人:【 oilio 分数: +2  时间:2007-1-18 02:24


2007-1-16 14:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beeny
初级用户





积分 136
发帖 49
注册 2007-1-4
状态 离线
『第 4 楼』:  2^>nul 这是啥意思?

2^>nul  这是啥意思?

2007-1-17 10:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by beeny at 2007-1-16 21:48:
2^>nul  这是啥意思?


  不显示错误信息。这是在for中的格式,在一般批程序里面这样就可以了:2>nul。


2007-1-18 00:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 6 楼』:  

谢谢你们,不知道说啥好。就给你们加了两分,只有这么多。还是非常感谢你们!lxmxn兄,请问"delims="是啥意思啊?等于号后面什么都不给,指的是啥意思呢?我只知道"delims=-",是指分隔符集是"-",不加是不是指所有的特殊符号?还有do @if exist "%a" del "%a",为什么要给变量%a加上双引号呢?有什么特别用途啊?

[ Last edited by oilio on 2007-1-17 at 02:08 PM ]



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-1-18 02:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by oilio at 2007-1-17 13:26:
谢谢你们,不知道说啥好。就给你们加了两分,只有这么多。还是非常感谢你们!lxmxn兄,请问"delims="是啥意思啊?等于号后面什么都不给,指 ...


  1、delims=:代表以:为分隔符的结果集,那么delims=后面什么也没有,就表示什么也不能作为分隔符,也就是取一行的所有元素。

  2、del 后面加引号是为了防止路径中有空格,导致删除失败。


   此帖被 +2 点积分    点击查看详情   
评分人:【 oilio 分数: +2  时间:2007-1-19 01:45


2007-1-18 13:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 8 楼』:  

哦,谢谢,非常感谢!受教了。虽然我才来这个论坛时间很短,但水平一直在慢慢的提高,离不开大家的支持啊。谢谢!

[ Last edited by oilio on 2007-1-18 at 01:25 PM ]



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-1-19 01:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: