标题: 求助:如何获取指定条件前的内容
[打印本页]
作者: 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
太帅了,谢谢