中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:如何获取指定条件前的内容
作者:
标题: 求助:如何获取指定条件前的内容 上一主题 | 下一主题
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『楼 主』:  求助:如何获取指定条件前的内容

我有一个文本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 ]

2009-9-9 07:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  


@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 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 xeibobin 分数: +2  时间:2009-9-9 08:44


2009-9-9 08:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 3 楼』:  

谢谢tireless,已经可以了,如果是包含固定内容的行呢,比如要把包含45的行前面一行保存到文本B.txt呢

2009-9-9 08:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 4 楼』:  


@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 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 xeibobin 分数: +2  时间:2009-9-9 13:16


2009-9-9 09:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 5 楼』:  

第二个代码好像不可以,呵呵,运行完毕,B.TXT应该是:
12342

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

2009-9-9 09:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 6 楼』:  

已修改 4 楼代码。

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

2009-9-9 10:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XiaoGuDong
初级用户





积分 172
发帖 88
注册 2006-12-8
状态 离线
『第 7 楼』:  

如果要显示为后第两行的呢?
运行完毕,B.TXT应该是:
52348
该怎么写?

2009-9-9 11:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  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


2009-9-9 12:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XiaoGuDong
初级用户





积分 172
发帖 88
注册 2006-12-8
状态 离线
『第 9 楼』:  

谢谢!真是这样的。

2009-9-9 12:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 10 楼』:  

太帅了,谢谢

2009-9-9 13:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: