|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『楼 主』:
出题:按特定条件查找文本内容(新手进)
a.txt 内容
sdfgsdfgsdfg
上正确
abcddfja;正确
下正确
sdfgsdgs
sdfgsdgsdg
55555555555
上正确
abcd正确
下正确
fgfdgsdfg
77777777777
上正确
abcddkfja
下正确
tuytutyuy
gfhgfh
上正确
abcd正确
下正确 要求一:显示a.txt中以 abcd 开头的行和它的上一行。
要求二:显示a.txt中以 abcd 开头的行和它的上一行及下一行。
为方便验证,在abcd开头的行的上下行分别以上正确、和下正确标明,所以不能以这些内容为判断基准。即:只能以是否 abcd 开头来判断
...
[ Last edited by 26933062 on 2008-5-24 at 01:46 AM ]
|
致精致简! |
|
2008-5-24 01:20 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
2 楼』:
一句完成?
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-24 01:32 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by pusofalse at 2008-5-24 01:32:
一句完成? |
|
两个要求,两个代码,
一句肯定不能完成啊。。。
|
致精致简! |
|
2008-5-24 01:34 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
4 楼』:
呵呵,还是我先来抛个石头吧:
第二题就留给大家了,第一题如下(为开拓一下思路):
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set str=%%i&set /a n+=1
set _!n!=%%i
if "!str:~,4!"=="abcd" call :lp
)
pause>nul&goto :eof
:lp
set b=%n%&set /a a=b-1
echo !_%a%!&echo !_%b%! [ Last edited by zw19750516 on 2008-5-24 at 02:05 AM ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-24 02:04 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
5 楼』:
1
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (
set/a n+=1
set !n!=%%a
)
for /l %%a in (1 1 %n%) do if "!%%a:~0,4!" equ "abcd" call :lp %%a
pause&goto :eof
:lp
set/a x=%1-1
echo !%x%!
echo !%1! 2.
@echo off&setlocal enabledelayedexpansion
for /f "delims=:" %%a in ('findstr /n .* a.txt') do set end=%%a
for /f "delims=" %%a in (a.txt) do (
set/a n+=1
set !n!=%%a
)
for /l %%a in (1 1 %n%) do if "!%%a:~0,4!" equ "abcd" call :lp %%a
pause&goto :eof
:lp
set/a x=%1-1
set/a m=%1+1
echo !%x%!
echo !%1!
if %m% lss %end% echo !%m%!
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-24 02:10 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
6 楼』:
5 楼
虽达到效果,但代码不够简洁,不够效率,加2分鼓励!继续努力,争取在一个for里完成。
|
致精致简! |
|
2008-5-24 02:14 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by 26933062 at 2008-5-24 02:14 AM:
虽达到效果,但代码不够简洁,不够效率,加2分鼓励!继续努力,争取在一个for里完成。 |
|
谢谢鼓励。。。 完全彼此误解了啊,我问是不是一句完成,是问是不是在一句for中完成。。。 而你理解的貌似是两个问题,两段代码 - -||||||
谢谢。。。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-24 02:18 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-24 02:23 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
9 楼』:
利用 set /a n+=1 来记录每一行,不失为一个办法,但似乎还可以更简洁。
也许谈不上更简洁,但还有其它办法,支持一题多解。。继续。。
|
致精致简! |
|
2008-5-24 02:26 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
10 楼』:
回 8 楼
你还是新手啊?
老鸟了。。。
|
致精致简! |
|
2008-5-24 02:27 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by zw19750516 at 2008-5-24 02:23 AM:
第二题其实只要稍改下我前面的代码就可以了:
[code]
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set str=%%i&set /a n+ ... |
|
厉害~~~
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-5-24 02:31 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
12 楼』:
回 8 楼
稀里糊涂就给你加分了,你的代码结果不正确。。。
|
致精致简! |
|
2008-5-24 02:33 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
13 楼』:
还想到个利用for /l %%i in 。。。 的,我就不再写了,留给pusofalse兄弟多多思考了。
|
批处理之家新域名:www.bathome.net |
|
2008-5-24 02:34 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
14 楼』:
Quote: | Originally posted by 26933062 at 2008-5-24 02:33:
稀里糊涂就给你加分了,你的代码结果不正确。。。 |
|
怎么不正确了,晕。。。
运行结果:
sdfjafj2上
abcddfja;
dfaf下
asdfj;af7上
abcd
dsfajfa下
ajdfa9djf上
abcddkfja
adfie下
djf;3a上
abcd未行 [ Last edited by zw19750516 on 2008-5-24 at 02:40 AM ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-24 02:36 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
15 楼』:
Quote: | Originally posted by zw19750516 at 2008-5-24 02:36:
怎么不正确了,晕。。。 |
|
最后一行没有显示出来。
|
致精致简! |
|
2008-5-24 02:37 |
|