![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 12:18 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求助:怎样删除D盘下面包含有关键字“sex"的所有文件! |
| 可打印版本 4,479 / 18 |
| 第1楼 xiaoliwind | 发表于 2006-09-24 03:07 |
| 初级用户 发帖 32 积分 43 | |
|
求助:怎样删除D盘下面包含有关键字“sex"的所有文件! 求助:怎样删除D盘下面包含有关键字“sex"的所有文件?
比如我的D盘下面有很多文件。我想删除文件的内容里面包含有”sex" "name" "year" 只要是其中一个关键字的文件。 |
|
| 第2楼 vkill | 发表于 2006-09-24 03:20 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
文件的内容里面包含?
这样查找的话速度很慢的 |
|
| 第3楼 lxmxn | 发表于 2006-09-24 03:33 |
| 版主 发帖 4,938 积分 11,386 | |
|
恩,赞同二楼滴``
这样系统CPU占用极有可能达到100%的`` |
|
| 第4楼 NaturalJ0 | 发表于 2006-09-24 04:12 |
| 银牌会员 发帖 533 积分 1,181 | |
|
这个用WINDOWS的搜索功能就行了,没必要花心思写个批处理了吧。
|
|
| 第5楼 namejm | 发表于 2006-09-24 07:04 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by NaturalJ0 at 2006-9-24 04:12: 如果只是查找带这些关键字的倒是可以,但是如果要查找文件的内容的话,用windows的搜索功能不会奏效。 |
|
| 第6楼 3742668 | 发表于 2006-09-24 07:09 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
1.以上代码在命令行中运行,如果写到批处理中需把%i替换为%%i 2.如果打印出来的文件列表为正确的结果,可以把echo更改为del来删除文件,建议更改为del后把d:\%i用引号包起来,如: del "d:\%i" |
|
| 第7楼 namejm | 发表于 2006-09-24 07:17 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
要实现楼主的愿望,也并非不可能,只是CPU占用会比较高罢了,处理的局限于文本内容的文件罢了,试试下面的代码(为了安全起见,测试的时候请把 del /a /f "%%i" 换为 echo "%%i"):
|
|
| 第8楼 namejm | 发表于 2006-09-24 07:26 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
呵呵,发完帖子之后才发现3742668版主已经在『第 6 楼』回帖了。版主善于充分利用findstr的各个参数,效率非常高,太强了。
|
|
| 第9楼 vkill | 发表于 2006-09-24 07:31 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
含有关键字“sex"的所有文件
不是只有 txt ? namejm 兄 |
|
| 第10楼 namejm | 发表于 2006-09-24 07:41 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-9-24 07:31: 没弄明白你的意思。你是想说含有"sex"的所有文件不只是指txt,还是? |
|
| 第11楼 pengfei | 发表于 2006-09-24 08:18 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
以前一直不敢用find与findstr做工作量大的任务, 原因在于查找命令太耗资源, 速度很慢. 试过在几千个文件中查找指定字符串, 少则几分钟多则十几分钟.
可是看到3742668版主的代码, 很是吃惊. 原来findstr可以配合这些参数来提高效率. 并且效率不是一般的提高. 呵呵~ 学习了... 跟据版主的代码改进以后, 应该可以符合楼主查找多种类型文件的需要. @echo off for %%a in (txt doc xml htm) do ( for /f "skip=1 tokens=*" %%i in ('findstr /m /s /d:d:\ "sex name year" *.%%a') do ( echo d:\%%i ) ) pause 如果还有其他类型请在第一个FOR语句中添加. |
|
| 第12楼 3742668 | 发表于 2006-09-24 08:54 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
Re pengfei:
一般来说,在写批处理脚本的时候尽量不要嵌套循环语句,毕竟批处理本身效率就不高。 在本例中,findstr是可以支持多个文件名的,所以可以使用类似下面的代码来提高效率: 当然,也可以把第二句用set /p来接受输入的文件类型。 |
|
| 第13楼 pengfei | 发表于 2006-09-24 09:14 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
厉害, 没话可说了, 呵呵~
其实如果查找到的匹配文件很多, 批处理效率还是很低的. 如果楼主能提供更多的文件特征, 比如文件名有什么特别. 这样我想会提高不少. 其实Windows搜索功能有按内容查找的功能, 而且速度很快, 可以按文件内容中的某个关键字查找. 3742668版主说的FOR语句嵌套的问题: 我是这样理解循环语句嵌套的. 两个FOR分内循环和外循环, 先执行的是外循环, 把变量放到内循环中, 当内循环执行完毕, 再转到外循环把第二个循环值放到内循环中再次执行内循环. 直到把外循环中的循环值执行完毕, 整个循环也就完成了. 版主的是一次搜索多个扩展名文件, 而嵌套循环是循环搜索多个扩展名. 查找的文件数量是相等的, 我想效率应该也差不多. |
|
| 第14楼 vkill | 发表于 2006-09-25 00:59 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by namejm at 2006-9-24 07:41: .bat |
|
| 第15楼 vkill | 发表于 2006-09-25 01:03 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
findstr /m /s /d:d:\ "sex name year" %strFiles%
findstr /? 还是没有看懂 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |