中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 18:15
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 出题:按特定条件查找文本内容(新手进) 查看 1,787 回复 22
16 发表于 2008-05-24 02:41 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by 26933062 at 2008-5-24 02:37:

最后一行没有显示出来。

abcd不是最后一行?
批处理之家新域名:www.bathome.net
17 发表于 2008-05-24 02:50 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
看我的样本,最后一行是 “下正确”
致精致简!
18 发表于 2008-05-24 03:00 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
报到
简单!简单!再简单!
19 这样可以不: 发表于 2008-05-24 03:01 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
加个abcd是不是倒数第二行判断:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (b.txt) do (
set str=%%i&set /a n+=1
set _!n!=%%i
if "!str:~,4!"=="abcd" call :lp
)
set /a m=n-1
set str=!_%m%!
if "!str:~,4!"=="abcd" echo !_%n%!
pause>nul&goto :eof
:lp
if defined c echo !_%c%!
set b=%n%
set /a a=b-1,c=b+1
echo !_%a%!&echo !_%b%!
批处理之家新域名:www.bathome.net
20 发表于 2008-05-24 03:07 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
还要考虑 简洁和效率
致精致简!
21 发表于 2008-05-24 10:20 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
发一个 这样处理行不
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set str=%%i
if "!str:~,4!"=="abcd" echo !var!&echo %%i
set var=%%i
)
pause
我也要分
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
if defined str1 echo !str1!&echo !var!&echo %%i&set str1=
set str=%%i
if "!str:~,4!"=="abcd" set str1=!var!
set var=%%i
)
pause

[ Last edited by terse on 2008-5-24 at 10:33 AM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
bat-zw +3 2008-05-24 11:26
26933062 +15 2008-05-24 13:10
简单!简单!再简单!
22 这下可以了吧: 发表于 2008-05-24 11:16 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
昨晚思路卡住了:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (b.txt) do (
set /a n+=1
set _!n!=%%i
if !n! geq 3 call :lp
)
pause>nul&goto :eof
:lp
set c=%n%
set /a b=c-1,a=c-2
set str=!_%b%!
if "!str:~,4!"=="abcd" echo !_%a%!&echo !_%b%!&echo !_%c%!


[ Last edited by zw19750516 on 2008-5-24 at 11:18 AM ]
批处理之家新域名:www.bathome.net
23 发表于 2008-05-24 11:26 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by terse at 2008-5-24 10:20:
发一个 这样处理行不
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set str=%%i
if "!str:~,4!"=="abcd" echo !var!& ...

高。。。
批处理之家新域名:www.bathome.net
论坛跳转: