中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-25 07:33
共 47,813 主题排行 / 349,918 发帖 / 今日 1 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助二:删除指定文本中以sw.bmp开头的行并保留空行
可打印版本  776 / 4
第1楼 suntb 发表于 2007-05-16 08:54
高级用户 发帖 277 积分 581
求助二:删除指定文本中以sw.bmp开头的行并保留空行
参考了分类帖子中类似的情况
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楼 suntb 发表于 2007-05-16 08:58
高级用户 发帖 277 积分 581
新手摸索中,请勿笑话

期待有兄弟帮忙解答
第3楼 bjsh 发表于 2007-05-16 09:20
银牌会员 发帖 621 积分 2,000
出现这种情况是因为for 的 /F 参数 会跳过空白行;
不如直接
findstr /r /i /v "^sw.bmp" test.txt >>test.bak
第4楼 ttyp 发表于 2007-05-16 09:23
初级用户 发帖 84 积分 180
@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楼 suntb 发表于 2007-05-16 09:42
高级用户 发帖 277 积分 581
bjsh版主的代码比用for代码速度快多了,结果符合要求

学习中

谢谢
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023