楼 主
我的findstr怎么了
发表于 2006-09-27 01:18 · 中国 福建 三明 电信
中级用户
★★
积分 316 发帖 83 注册 2005-03-01 00:00 21年会员 UID 36626 性别 男
状态 离线
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 楼
发表于 2006-09-27 01:23 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
你的代码有点问题,试试下面这个语句呢:
for /F %i in ('dir /ad /s /b') do (echo %~ni|findstr "123">nul && echo %~ni)
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 3 楼
发表于 2006-09-27 01:30 · 中国 福建 三明 电信
中级用户
★★
积分 316 发帖 83 注册 2005-03-01 00:00 21年会员 UID 36626 性别 男
状态 离线
好像还是不行啊
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 楼
发表于 2006-09-27 02:01 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
你干脆把下面的代码放到批处理来执行算了,在CMD窗口里很受干扰的。
@echo off
for /F %%i in ('dir /ad /s /b') do (echo %%~ni|findstr "123">nul && echo %%~ni)
pause
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 5 楼
发表于 2006-09-27 02:11 · 中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493 发帖 2,672 注册 2005-09-02 00:00 20年会员 UID 42173 性别 男
状态 离线
你的bat名字是不是findstr.bat ?
C:\> BLOG http://initiative.yo2.cn/
C:\> hh.exe ntcmds.chm::/ntcmds.htm
C:\> cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll /10/5432'>"
第 6 楼
发表于 2006-09-27 02:34 · 中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185 发帖 438 注册 2006-08-28 12:00 19年会员 UID 61449 来自 北京
状态 离线
LZ想要实现什么效果???不明白,是找123命名的文件夹吗?还是???
我今后在论坛的目标就是做个超级坏人!!!
第 7 楼
发表于 2006-09-27 08:12 · 中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103 发帖 1,744 注册 2006-01-20 13:00 20年会员 UID 49241 性别 男 来自 甘肃.临泽
状态 离线
第 8 楼
发表于 2006-09-27 09:25 · 中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218 发帖 485 注册 2006-07-21 21:24 20年会员 UID 58987 来自 湖南.娄底
状态 离线
Originally posted by smileseeker at 2006-9-27 01:18:
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 yo ...
很明显你的代码是错误的. 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 楼
发表于 2006-09-27 09:28 · 中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103 发帖 1,744 注册 2006-01-20 13:00 20年会员 UID 49241 性别 男 来自 甘肃.临泽
状态 离线
Originally posted by pengfei at 2006-9-27 09:25:
很明显你的代码是错误的. dir /ad /s /b是查找文件夹, 而%~ni为扩展到文件名. 哪里来的文件名吗? 根本就只有路径.
代码修改为:
@echo off
for /F "t ...
本来windows就认不出什么是文件什么是路径的,问个问题,有个文件夹a.txt ,你说它是文件夹还是文件???更何况是机器,它怎么认的出
第 10 楼
发表于 2006-09-27 09:32 · 中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218 发帖 485 注册 2006-07-21 21:24 20年会员 UID 58987 来自 湖南.娄底
状态 离线
刚才测试了一下我的电脑没有出现错误提示.
我是认为%%~ni为扩展到文件名! 如果为路径扩展会出现错误.
[ Last edited by pengfei on 2006-9-27 at 09:40 ]
第 11 楼
发表于 2006-09-27 09:42 · 中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103 发帖 1,744 注册 2006-01-20 13:00 20年会员 UID 49241 性别 男 来自 甘肃.临泽
状态 离线
Originally posted by pengfei at 2006-9-27 09:32:
刚才测试了一下我的电脑没有出现错误提示.
我是认为%%~ni为扩展到文件名! 如果为路径扩展会出现错误.
[ Last edited by pengfei on 2006-9-27 at 09:40 ]
cd c:\
md test
cd test
md 123
md 123456
for /F %i in ('dir /ad /s /b') do echo %~ni | findstr "123"
你执行这个看看,看看会不会出错
第 12 楼
发表于 2006-09-27 09:44 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
Originally posted by he200377 at 2006-9-27 09:28:
本来windows就认不出什么是文件什么是路径的,问个问题,有个文件夹a.txt ,你说它是文件夹还是文件???更何况是机器,它怎么认的出
此言差矣。CMD下的 dir 是可以区分出某个file到底是文件夹还是文件的,要不然,dir命令还要 /ad 和 /a-d 这两个参数干什么呢?如果按照你的理解,它们岂不成了摆设了吗?你建立一个a.txt的文件夹,分别用 dir /ad 和 dir /a-d 来试试,看dir是不是能正确区分出来。
只是在for语句的扩展中,%~xi 简单地认为最后一个以点号结束的字符串是后缀名,从而造成把文件夹a.txt的后缀名误认为是.txt的情况。如果据此就认为windows不能正确区分文件和路径的话,那就大错特错了。不过这也证明了for语句的扩展是有bug的,使用的时候千万要小心。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 13 楼
发表于 2006-09-27 09:44 · 中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218 发帖 485 注册 2006-07-21 21:24 20年会员 UID 58987 来自 湖南.娄底
状态 离线
是的, 看来是我错了. 没有经过测试, 只是理论推断.
第 14 楼
发表于 2006-09-27 09:52 · 中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103 发帖 1,744 注册 2006-01-20 13:00 20年会员 UID 49241 性别 男 来自 甘肃.临泽
状态 离线
分别用 dir /ad 和 dir /a-d 来试试
一言指明哈~原来 dir 可以排除目录的,搞的上次为了这个排除目录而想方法,这次回去再 *.exe /? 看看
第 15 楼
发表于 2006-09-27 09:53 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 20年会员 UID 51697 来自 成都
状态 离线
Originally posted by he200377 at 2006-9-27 09:42:
cd c:\
md test
cd test
md 123
md 123456
for /F %i in ('dir /ad /s /b') do echo %~ni | findstr "123"
你执行这个看看,看看会不会出错
从这段代码来看,你是在CMD窗口下执行的。从你的整体意思来看,你是想先转到 C 盘根目录下之后再创建文件夹,但是你最开始的那一句就没写对,因为它并不能跳转到 C 盘根目录下,请想想这是为什么;并且,你最后的for语句不完整,所以就算你前面的代码都写对了,执行到这里的时候也会发生错误的。
以上代码我是在批处理中把 %i 替换成 %%i 来执行的,所以导致以上言论出了错,在此更正,并对导致别人的误解表示歉意。
[
Last edited by namejm on 2006-9-27 at 10:16 ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正