中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-28 23:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助二:删除指定文本中以sw.bmp开头的行并保留空行 查看 689 回复 4
楼 主 求助二:删除指定文本中以sw.bmp开头的行并保留空行 发表于 2007-05-16 08:54 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
19年会员
UID 74328
性别 男
状态 离线
参考了分类帖子中类似的情况
http://www.cn-dos.net/forum/viewthread.php?tid=27582

得出代码如下

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


可是,查看test.bak发现文本的空行也被删除了。如果要保留空行,该如何改代码?
2 发表于 2007-05-16 08:58 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
19年会员
UID 74328
性别 男
状态 离线
新手摸索中,请勿笑话

期待有兄弟帮忙解答
3 发表于 2007-05-16 09:20 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
出现这种情况是因为for 的 /F 参数 会跳过空白行;
不如直接
findstr /r /i /v "^sw.bmp" test.txt >>test.bak
4 发表于 2007-05-16 09:23 ·  中国 上海 电信
初级用户
★★
积分 180
发帖 84
注册 2006-09-07 00:33
19年会员
UID 61995
状态 离线
@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
)
)
5 发表于 2007-05-16 09:42 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
19年会员
UID 74328
性别 男
状态 离线
bjsh版主的代码比用for代码速度快多了,结果符合要求

学习中

谢谢
论坛跳转: