中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 10:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:如何获取指定条件前的内容 查看 661 回复 9
楼 主 求助:如何获取指定条件前的内容 发表于 2009-09-09 07:58 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
我有一个文本a.txt,内容是:
abcda
12342
45672
ioyre
52348
89976
uyttr
uugts
56738
87654
uyytr
jkite
5rtr8
uttre

我想把每行符合5***8这样条件的,它的前一行内容保存在B.txt.
变成b.txt的内容为:
ioyre
uugts
jkite

不知道批处理能不能做到。。。谢谢大家了

[ Last edited by xeibobin on 2009-9-9 at 08:00 ]
2 发表于 2009-09-09 08:17 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off
(for /f "eol= delims=" %%a in (a.txt) do (
set var=%%a
setlocal enabledelayedexpansion
if "!var:~,1!!var:~-1!"=="58" echo;!last!
endlocal
set last=%%a
))>b.txt


[ Last edited by tireless on 2009-9-9 at 08:29 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +2 2009-09-09 08:44
3 发表于 2009-09-09 08:50 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
谢谢tireless,已经可以了,如果是包含固定内容的行呢,比如要把包含45的行前面一行保存到文本B.txt呢
4 发表于 2009-09-09 09:09 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off
(for /f "eol= delims=" %%a in (a.txt) do (
set var=%%a
setlocal enabledelayedexpansion
if "!var:45=!" neq "!var!" echo;!last!
endlocal
set last=%%a
))>b.txt


[ Last edited by tireless on 2009-9-9 at 10:20 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +2 2009-09-09 13:16
5 发表于 2009-09-09 09:29 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
第二个代码好像不可以,呵呵,运行完毕,B.TXT应该是:
12342

才对。。麻烦你再帮我看看。。。
6 发表于 2009-09-09 10:22 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
已修改 4 楼代码。

之前看错意思了,看成了“整行内容是 45”...
7 发表于 2009-09-09 11:46 ·  中国 山西 移动
初级用户
★★
积分 172
发帖 88
注册 2006-12-08 10:47
19年会员
UID 72923
性别 男
状态 离线
如果要显示为后第两行的呢?
运行完毕,B.TXT应该是:
52348
该怎么写?
8 re 7 楼: 发表于 2009-09-09 12:25 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
set n=0
(for /f "delims=" %%a in (a.txt) do (
if !n! leq 1 (
if !n! equ 1 set /a n-=1 & echo;%%a
set var=%%a
if "!var:45=!" neq "!var!" set n=2
) else set /a n-=1
))>b.txt
9 发表于 2009-09-09 12:31 ·  中国 山西 移动
初级用户
★★
积分 172
发帖 88
注册 2006-12-08 10:47
19年会员
UID 72923
性别 男
状态 离线
谢谢!真是这样的。
10 发表于 2009-09-09 13:16 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
太帅了,谢谢
论坛跳转: