Board logo

标题: find.exe问题(问题已解决希望遇到FIND问题的人进来看看) [打印本页]

作者: chenhui530     时间: 2005-2-11 00:00    标题: find.exe问题(问题已解决希望遇到FIND问题的人进来看看)

使用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

[此贴子已经被作者于2005-2-13 17:04:27编辑过]



作者: JonePeng     时间: 2005-2-11 00:00
楼主一定是用Win2000/XP或者MSDOS 7.1新版本的FIND.EXE,这个程序有点毛病,就是不管是找到字符串与否,其返回值都为零,以致判断错误。用Win98的Find.exe吧(该文件的大小为6,658字节,日期:05-05-99)。
作者: gmy     时间: 2005-2-12 00:00
首行换成TYPE c:\123\set.txt|find "123"
作者: JonePeng     时间: 2005-2-12 00:00
楼上的和“find "123" c:\123\set.txt>nul”同出一辙,问题关键不在这,而是在于FIND.EXE本身。

作者: Climbing     时间: 2005-2-12 00:00
问题不在find.exe吧?我觉得是楼主的批处理写的有问题,对errorlevel进行判断时要从高到低进行判断,即:find "123" c:\123\set.txt>nul
:: 如果找不到,则返回值1,所以要先判断找不到的情况
if errorlevel 1 echo 234
:: 如果找到了,返回值才是0      
if errorlevel 0 echo 123
作者: gmy     时间: 2005-2-12 00:00
综合 JonePeng Climbing gmy 说的就对了!
作者: chenhui530     时间: 2005-2-12 00:00
谢谢大家的热情帮助!!问题找出来了不是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 ::没有找到字符串大家不妨试下