Board logo

标题: 求助:如何获取指定条件前的内容 [打印本页]

作者: xeibobin     时间: 2009-9-9 07:58    标题: 求助:如何获取指定条件前的内容
我有一个文本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 ]

作者: tireless     时间: 2009-9-9 08:17
@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 ]

作者: xeibobin     时间: 2009-9-9 08:50
谢谢tireless,已经可以了,如果是包含固定内容的行呢,比如要把包含45的行前面一行保存到文本B.txt呢

作者: tireless     时间: 2009-9-9 09:09
@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 ]

作者: xeibobin     时间: 2009-9-9 09:29
第二个代码好像不可以,呵呵,运行完毕,B.TXT应该是:
12342

才对。。麻烦你再帮我看看。。。

作者: tireless     时间: 2009-9-9 10:22
已修改 4 楼代码。

之前看错意思了,看成了“整行内容是 45”...

作者: XiaoGuDong     时间: 2009-9-9 11:46
如果要显示为后第两行的呢?
运行完毕,B.TXT应该是:
52348
该怎么写?

作者: tireless     时间: 2009-9-9 12:25    标题: re 7 楼:
@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

作者: XiaoGuDong     时间: 2009-9-9 12:31
谢谢!真是这样的。

作者: xeibobin     时间: 2009-9-9 13:16
太帅了,谢谢