中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何取首个符合条件的内容 上一主题 | 下一主题
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『楼 主』:  如何取首个符合条件的内容

1.txt

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

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

要求只能用for或findstr,一句解决。



DOS之家 http://doshome.com 站长 葛明阳
2008-4-26 15:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 2 楼』:  

@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 ]

2008-4-26 16:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 3 楼』:  


@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 ]

2008-4-26 16:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 4 楼』:  

2楼,不符合“一句解决”的要求。
3楼,也不行,输出结果是最后一个符合条件的 abcZZZ,应该是首个符合条件的 abcXXX 才对。

[ Last edited by gmy on 2008-4-26 at 05:05 PM ]



DOS之家 http://doshome.com 站长 葛明阳
2008-4-26 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 5 楼』:  



  Quote:
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。

2008-4-26 17:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 6 楼』:  

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 站长 葛明阳
2008-4-26 17:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by gmy at 2008-4-26 05:16 PM:
3楼的根本无法执行,提示:此时不应该有%%a
所以我把改成%%a改成%a,可以执行但结果不对。

我提供的是bat代码阿

2008-4-26 17:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 8 楼』:  

楼主应该保存为.BAT或者.CMD执行,直接复制在CMD环境是不可以的



*讨厌的9527*  
2008-4-26 17:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 9 楼』:  

必须在CMD命令行下执行



DOS之家 http://doshome.com 站长 葛明阳
2008-4-26 17:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

3楼代码能显示么? goto :eof 不会直接退出吗?
楼主这个问题似乎有点强人所难了。。。



致精致简!
2008-4-26 17:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 11 楼』:  

那楼主就试试下面的语句吧
@for /f "delims==" %a in ('findstr /i "^abc" 1.txt') do @if not defined a @echo.%a&set a=ansi


   此帖被 +4 点积分        点击查看详情   
评分人:【 moniuming 分数: +4  时间:2008-4-26 17:47




*讨厌的9527*  
2008-4-26 17:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 12 楼』:  


@for /f "delims==" %a in ('findstr /i "^abc" a.txt') do @echo %a&cmd/k




致精致简!
2008-4-26 17:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 13 楼』:  

感谢11楼,没有成功
感谢12楼,成功,设计的比较巧妙。

此贴已结,谢谢大家。

[ Last edited by gmy on 2008-4-26 at 05:42 PM ]



DOS之家 http://doshome.com 站长 葛明阳
2008-4-26 17:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by gmy at 2008-4-26 05:36 PM:
感谢11楼,没有成功,我还是用3楼的吧,此贴已结,谢谢大家。

11楼和12楼的都可以啊~~~~~~~

2008-4-26 17:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 15 楼』:  

我也来一个
for /f "delims==" %i in ('findstr /i "abc" 1.txt') do @echo %i&pause&exit /b


2008-4-26 17:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: