Board logo

标题: 如何取首个符合条件的内容 [打印本页]

作者: gmy     时间: 2008-4-26 15:59    标题: 如何取首个符合条件的内容
1.txt .... .... .... abcXXX=YYY .... .... abcZZZ=CCC ... 找到以ABC开头的一行的=左边的内容,此例输出结果是abcXXX 注意,XXX, YYY都不确定,abc所在行的行号也不确定,但有可能以后行里也有以abc开头的行(只取第一个符合条件的) 要求只能用for或findstr,一句解决。

作者: pusofalse     时间: 2008-4-26 16:03
@echo off&setlocal enabledelayedexpansion for /f "delims==" %%a in ('findstr /i "^abc" 1.txt') do ( set /a n+=1 if !n! equ 1 echo %%a ) pause [ Last edited by pusofalse on 2008-4-26 at 04:19 PM ]

作者: s11ss     时间: 2008-4-26 16:34
@for /f "delims==" %%a in ('findstr /i "^abc" 1.txt') do @echo %%a&goto :eof
[ Last edited by s11ss on 2008-4-26 at 04:36 PM ]

作者: gmy     时间: 2008-4-26 17:01
2楼,不符合“一句解决”的要求。 3楼,也不行,输出结果是最后一个符合条件的 abcZZZ,应该是首个符合条件的 abcXXX 才对。 [ Last edited by gmy on 2008-4-26 at 05:05 PM ]

作者: s11ss     时间: 2008-4-26 17:06
Originally posted by gmy at 2008-4-26 05:01 PM: 2楼,不符合“一句解决”的要求。 3楼,也不行,输出结果是最后一个符合条件的 abcZZZ,应该是首个符合条件的 abcXXX 才对。 [ Last edited by gmy on 2008-4-26 at 05:05 PM ]
可是我这儿实验就是输出abcXXX。

作者: gmy     时间: 2008-4-26 17:16
3楼的根本无法执行,提示:此时不应该有%%a 所以我把改成%%a改成%a,可以执行但结果不对。 我把1.txt打全了: 111=222 333=444 abcXXX=YYY 555=666 777=888 abcZZZ=CCC 999=000 [ Last edited by gmy on 2008-4-26 at 05:19 PM ]

作者: s11ss     时间: 2008-4-26 17:18
Originally posted by gmy at 2008-4-26 05:16 PM: 3楼的根本无法执行,提示:此时不应该有%%a 所以我把改成%%a改成%a,可以执行但结果不对。
我提供的是bat代码阿

作者: ansipeter     时间: 2008-4-26 17:19
楼主应该保存为.BAT或者.CMD执行,直接复制在CMD环境是不可以的

作者: gmy     时间: 2008-4-26 17:20
必须在CMD命令行下执行

作者: 26933062     时间: 2008-4-26 17:27
3楼代码能显示么? goto :eof 不会直接退出吗? 楼主这个问题似乎有点强人所难了。。。

作者: ansipeter     时间: 2008-4-26 17:27
那楼主就试试下面的语句吧
@for /f "delims==" %a in ('findstr /i "^abc" 1.txt') do @if not defined a @echo.%a&set a=ansi

作者: 26933062     时间: 2008-4-26 17:32
@for /f "delims==" %a in ('findstr /i "^abc" a.txt') do @echo %a&cmd/k

作者: gmy     时间: 2008-4-26 17:36
感谢11楼,没有成功 感谢12楼,成功,设计的比较巧妙。 此贴已结,谢谢大家。 [ Last edited by gmy on 2008-4-26 at 05:42 PM ]

作者: s11ss     时间: 2008-4-26 17:39
Originally posted by gmy at 2008-4-26 05:36 PM: 感谢11楼,没有成功,我还是用3楼的吧,此贴已结,谢谢大家。
11楼和12楼的都可以啊~~~~~~~

作者: moniuming     时间: 2008-4-26 17:48
我也来一个
for /f "delims==" %i in ('findstr /i "abc" 1.txt') do @echo %i&pause&exit /b