Board logo

标题: [文本处理] 为啥批处理find命令的返回值都是0? [打印本页]

作者: applo_cx    时间: 2010-7-31 21:39     标题: 为啥批处理find命令的返回值都是0?

新客报到,大家多包涵。
没事在dos7.1下自己用Ghost做了个备份还原工具,使用ghost -dd获取磁盘信息,利用Find查找分区的卷标,利用erroelevel判断是否找到,可无论找到与否,errorlevel的值都是0,百思不得其解,不知是哪里错啦?
附一段代码:
@echo off
……
type ghststat.txt | find /i "1.1: [WinXp]"
if errorlevel 1 goto Ghost
if errorlevel 0 goto OoK
……
无论是否找到,都转向Ook,大家看看怎么回事
作者: wankoilz    时间: 2010-7-31 22:05

因为find不管有没有找到目标字符,find都正常执行了,所以返回0。
这种情况可以这样解决:
type ghststat.txt | find /i "1.1: [WinXp]"&&goto OoK||goto OoK
作者: hfg1977    时间: 2010-7-31 22:19

dos7.1....
有些命令可能不存在errorlevel值
你可以尝试改写代码:
……
for /f "delims= " %%a in ('type ghststat.txt ^| find /n /i "1.1: [WinXp]"') do set ERR=%%a
if %ERR% GEQ 1 goto Ghost
if "%ERR%"=="0" goto OoK
……
不知道dos7.1支持 for /f 命令不?
作者: applo_cx    时间: 2010-8-1 00:39

原帖由 wankoilz 于 2010-7-31 22:05 发表
因为find不管有没有找到目标字符,find都正常执行了,所以返回0。
这种情况可以这样解决:
type ghststat.txt | find /i "1.1: [WinXp]"&&goto OoK||goto OoK



谢谢你
但是这句执行时出错:syntax error
可能dos7.1不支持||命令
作者: applo_cx    时间: 2010-8-1 00:42

原帖由 hfg1977 于 2010-7-31 22:19 发表
dos7.1....
有些命令可能不存在errorlevel值
你可以尝试改写代码:
……
for /f "delims= " %%a in ('type ghststat.txt ^| find /n /i "1.1: [WinXp]"') do set ERR=%%a
if %ERR% GEQ 1 goto Ghost
if "%ERR%" ...


谢谢你!
dos7.1不支持 GEQ等扩展,只支持==
另for命令也不支持 f 开关




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2