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
太帅了,谢谢