[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 为啥批处理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,大家看看怎么回事

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

TOP

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 命令不?

TOP

原帖由 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不支持||命令

TOP

原帖由 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 开关

TOP

返回列表