中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-27 06:35
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何取首个符合条件的内容 查看 753 回复 14
楼 主 如何取首个符合条件的内容 发表于 2008-04-26 15:59 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
1.txt

....
....
....
abcXXX=YYY
....
....
abcZZZ=CCC
...

找到以ABC开头的一行的=左边的内容,此例输出结果是abcXXX
注意,XXX, YYY都不确定,abc所在行的行号也不确定,但有可能以后行里也有以abc开头的行(只取第一个符合条件的)

要求只能用for或findstr,一句解决。
DOS之家 http://doshome.com 站长 葛明阳
2 发表于 2008-04-26 16:03 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
@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 ]
3 发表于 2008-04-26 16:34 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
@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 ]
4 发表于 2008-04-26 17:01 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
2楼,不符合“一句解决”的要求。
3楼,也不行,输出结果是最后一个符合条件的 abcZZZ,应该是首个符合条件的 abcXXX 才对。

[ Last edited by gmy on 2008-4-26 at 05:05 PM ]
DOS之家 http://doshome.com 站长 葛明阳
5 发表于 2008-04-26 17:06 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
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。
6 发表于 2008-04-26 17:16 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
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 ]
DOS之家 http://doshome.com 站长 葛明阳
7 发表于 2008-04-26 17:18 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
Originally posted by gmy at 2008-4-26 05:16 PM:
3楼的根本无法执行,提示:此时不应该有%%a
所以我把改成%%a改成%a,可以执行但结果不对。

我提供的是bat代码阿
8 发表于 2008-04-26 17:19 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
楼主应该保存为.BAT或者.CMD执行,直接复制在CMD环境是不可以的
9 发表于 2008-04-26 17:20 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
必须在CMD命令行下执行
DOS之家 http://doshome.com 站长 葛明阳
10 发表于 2008-04-26 17:27 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
3楼代码能显示么? goto :eof 不会直接退出吗?
楼主这个问题似乎有点强人所难了。。。
致精致简!
11 发表于 2008-04-26 17:27 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
那楼主就试试下面的语句吧

@for /f "delims==" %a in ('findstr /i "^abc" 1.txt') do @if not defined a @echo.%a&set a=ansi
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +4 2008-04-26 17:47
12 发表于 2008-04-26 17:32 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@for /f "delims==" %a in ('findstr /i "^abc" a.txt') do @echo %a&cmd/k
致精致简!
13 发表于 2008-04-26 17:36 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
23年会员
UID 228
性别 男
状态 离线
感谢11楼,没有成功
感谢12楼,成功,设计的比较巧妙。

此贴已结,谢谢大家。

[ Last edited by gmy on 2008-4-26 at 05:42 PM ]
DOS之家 http://doshome.com 站长 葛明阳
14 发表于 2008-04-26 17:39 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
Originally posted by gmy at 2008-4-26 05:36 PM:
感谢11楼,没有成功,我还是用3楼的吧,此贴已结,谢谢大家。

11楼和12楼的都可以啊~~~~~~~
15 发表于 2008-04-26 17:48 ·  中国 上海 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
我也来一个
for /f "delims==" %i in ('findstr /i "abc" 1.txt') do @echo %i&pause&exit /b
论坛跳转: