![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 03:22 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 我的findstr怎么了 |
| 可打印版本 2,979 / 22 |
| 第1楼 smileseeker | 发表于 2006-09-27 01:18 |
| 中级用户 发帖 83 积分 316 | |
|
我的findstr怎么了 D:\scripts>for /F %i in ('dir /ad /s /b') do echo %~ni | findstr "123"
D:\scripts>echo 123 | findstr "123" Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: ^CEnter your code:Enter your code:Enter your code:Enter your code:Enter your cod e:Enter your code:Enter your code:Enter your code:^C^CEnter your code:Enter your code:^C^CERROR!!! |
|
| 第2楼 namejm | 发表于 2006-09-27 01:23 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
你的代码有点问题,试试下面这个语句呢:
|
|
| 第3楼 smileseeker | 发表于 2006-09-27 01:30 |
| 中级用户 发帖 83 积分 316 | |
|
好像还是不行啊
D:\scripts>for /F %i in ('dir /ad /s /b') do (echo %~ni | findstr "123" && ec ho %~ni ) D:\scripts>(echo 123 | findstr "123" && echo 123 ) Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: Enter your code:Enter your code:Enter your code:Enter your code:Enter your code: |
|
| 第4楼 namejm | 发表于 2006-09-27 02:01 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
你干脆把下面的代码放到批处理来执行算了,在CMD窗口里很受干扰的。
|
|
| 第5楼 electronixtar | 发表于 2006-09-27 02:11 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
你的bat名字是不是findstr.bat ?
|
|
| 第6楼 9527 | 发表于 2006-09-27 02:34 |
| 银牌会员 发帖 438 积分 1,185 来自 北京 | |
|
LZ想要实现什么效果???不明白,是找123命名的文件夹吗?还是???
|
|
| 第7楼 vkill | 发表于 2006-09-27 08:12 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
没有遇到过
|
|
| 第8楼 pengfei | 发表于 2006-09-27 09:25 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
Originally posted by smileseeker at 2006-9-27 01:18: 很明显你的代码是错误的. dir /ad /s /b是查找文件夹, 而%~ni为扩展到文件名. 哪里来的文件名吗? 根本就只有路径. 代码修改为: @echo off for /F "tokens=*" %%i in ('dir /a-d /s /b *.*') do ( echo %%~ni | findstr "123" && echo 找到匹配文件 ) pause 请保存为批处运行. |
|
| 第9楼 vkill | 发表于 2006-09-27 09:28 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by pengfei at 2006-9-27 09:25: 本来windows就认不出什么是文件什么是路径的,问个问题,有个文件夹a.txt ,你说它是文件夹还是文件???更何况是机器,它怎么认的出 |
|
| 第10楼 pengfei | 发表于 2006-09-27 09:32 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
刚才测试了一下我的电脑没有出现错误提示.
我是认为%%~ni为扩展到文件名! 如果为路径扩展会出现错误. [ Last edited by pengfei on 2006-9-27 at 09:40 ] |
|
| 第11楼 vkill | 发表于 2006-09-27 09:42 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by pengfei at 2006-9-27 09:32: cd c:\ md test cd test md 123 md 123456 for /F %i in ('dir /ad /s /b') do echo %~ni | findstr "123" 你执行这个看看,看看会不会出错 |
|
| 第12楼 namejm | 发表于 2006-09-27 09:44 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-9-27 09:28: 此言差矣。CMD下的 dir 是可以区分出某个file到底是文件夹还是文件的,要不然,dir命令还要 /ad 和 /a-d 这两个参数干什么呢?如果按照你的理解,它们岂不成了摆设了吗?你建立一个a.txt的文件夹,分别用 dir /ad 和 dir /a-d 来试试,看dir是不是能正确区分出来。 只是在for语句的扩展中,%~xi 简单地认为最后一个以点号结束的字符串是后缀名,从而造成把文件夹a.txt的后缀名误认为是.txt的情况。如果据此就认为windows不能正确区分文件和路径的话,那就大错特错了。不过这也证明了for语句的扩展是有bug的,使用的时候千万要小心。 |
|
| 第13楼 pengfei | 发表于 2006-09-27 09:44 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
是的, 看来是我错了. 没有经过测试, 只是理论推断.
|
|
| 第14楼 vkill | 发表于 2006-09-27 09:52 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
分别用 dir /ad 和 dir /a-d 来试试
一言指明哈~原来 dir 可以排除目录的,搞的上次为了这个排除目录而想方法,这次回去再 *.exe /? 看看 |
|
| 第15楼 namejm | 发表于 2006-09-27 09:53 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-9-27 09:42: 从这段代码来看,你是在CMD窗口下执行的。从你的整体意思来看,你是想先转到 C 盘根目录下之后再创建文件夹,但是你最开始的那一句就没写对,因为它并不能跳转到 C 盘根目录下,请想想这是为什么;并且,你最后的for语句不完整,所以就算你前面的代码都写对了,执行到这里的时候也会发生错误的。 以上代码我是在批处理中把 %i 替换成 %%i 来执行的,所以导致以上言论出了错,在此更正,并对导致别人的误解表示歉意。 [ Last edited by namejm on 2006-9-27 at 10:16 ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |