中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-17 03:37
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » find.exe问题(问题已解决希望遇到FIND问题的人进来看看) 查看 1,185 回复 6
楼 主 find.exe问题(问题已解决希望遇到FIND问题的人进来看看) 发表于 2005-02-11 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
使用find.exe中出现问题谁能提供个好的版本的find.exe
代码如下:
find "123" c:\123\set.txt>nul
if errorlevel 0 echo 123
if not errorlevel 0 echo 234
问题出在不管文件c:\123.txt里面有没有字符串“123”他都显示123也就是执行第一行的命令
谁能提供一个好的版本只有在存在字符串“123”的时候才显示123否则显示234
http://www.msfans.net/bbs/
2 发表于 2005-02-11 00:00 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
楼主一定是用Win2000/XP或者MSDOS 7.1新版本的FIND.EXE,这个程序有点毛病,就是不管是找到字符串与否,其返回值都为零,以致判断错误。用Win98的Find.exe吧(该文件的大小为6,658字节,日期:05-05-99)。
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
3 发表于 2005-02-12 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
首行换成TYPE c:\123\set.txt|find "123"
DOS之家 http://doshome.com 站长 葛明阳
4 发表于 2005-02-12 00:00 ·  中国 广东 广州 白云区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
楼上的和“find "123" c:\123\set.txt>nul”同出一辙,问题关键不在这,而是在于FIND.EXE本身。
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
5 发表于 2005-02-12 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
问题不在find.exe吧?我觉得是楼主的批处理写的有问题,对errorlevel进行判断时要从高到低进行判断,即:find "123" c:\123\set.txt>nul
:: 如果找不到,则返回值1,所以要先判断找不到的情况
if errorlevel 1 echo 234
:: 如果找到了,返回值才是0
if errorlevel 0 echo 123
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2005-02-12 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
综合 JonePeng Climbing gmy 说的就对了!
DOS之家 http://doshome.com 站长 葛明阳
7 发表于 2005-02-12 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
谢谢大家的热情帮助!!问题找出来了不是find.exe的问题是if命令出错了如果是if errorlevel 0的话不管里面是不是存在相应的字符串也会执行后面的命令,我试了几次正确的命令应该是if not errorlevel 1是表示字符串存在所以要完成我上面写的批处理应该代码为:find "123" c:\123\set.txt>nul
if not errorlevel 1 echo 123 ::找到字符串
echo 234 ::没有找到字符串大家不妨试下
http://www.msfans.net/bbs/
论坛跳转: