中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助二:删除指定文本中以sw.bmp开头的行并保留空行
作者:
标题: 求助二:删除指定文本中以sw.bmp开头的行并保留空行 上一主题 | 下一主题
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『楼 主』:  求助二:删除指定文本中以sw.bmp开头的行并保留空行

参考了分类帖子中类似的情况
http://www.cn-dos.net/forum/viewthread.php?tid=27582

得出代码如下

  Quote:
for /f "delims=" %%i in ('findstr /r /i /v "^sw.bmp" test.txt') do echo>>test.bak %%i

可是,查看test.bak发现文本的空行也被删除了。如果要保留空行,该如何改代码?

2007-5-16 08:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 2 楼』:  

新手摸索中,请勿笑话

期待有兄弟帮忙解答

2007-5-16 08:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 3 楼』:  

出现这种情况是因为for 的 /F 参数 会跳过空白行;
不如直接
findstr /r /i /v "^sw.bmp" test.txt >>test.bak

2007-5-16 09:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ttyp
初级用户





积分 180
发帖 84
注册 2006-9-7
状态 离线
『第 4 楼』:  

@echo off
cd.>b.txt
for /f  %%i in ('findstr /i /v /n "^sw\.bmp.*" a.txt') do (
        for /f "tokens=1,2* delims=:" %%a in ("%%i") do (
                if "%%b"=="" (echo.>>b.txt) else echo %%b>>b.txt
        )
)

2007-5-16 09:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 5 楼』:  

bjsh版主的代码比用for代码速度快多了,结果符合要求

学习中

谢谢

2007-5-16 09:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: