![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 09:56 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何删除文本文件内连续多行内容? |
| 可打印版本 760 / 6 |
| 第1楼 namelessone | 发表于 2009-09-03 02:27 |
| 新手上路 发帖 6 积分 7 | |
|
如何删除文本文件内连续多行内容? 我想检索log1.txt的内容,如果发现02则删除02及之后的连续三行,试了一下for遍历,在for和if中的set命令看来无法生效,试过把变量名加上%或!,都不起作用。以下是脚本,大家帮忙看看应该怎么标记变量名。
另外 这是只删一行的脚本,没有问题: log1.txt中的内容类似于: 01 02 03 04 05 06 需要格式化为: 01 06 麻烦大家给些建议 谢谢。 [ Last edited by namelessone on 2009-9-3 at 02:32 ] |
|
| 第2楼 Hanyeguxing | 发表于 2009-09-03 03:01 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
把tokens=1,* 改成tokens=1,2*
找到02后返回行号,然后运算,用if过滤获取所需行号即可 |
|
| 第3楼 namelessone | 发表于 2009-09-03 03:43 |
| 新手上路 发帖 6 积分 7 | |
|
不太明白,返回行号我也需要把02这行的行号set成一个标记变量吧,然后把标记变量依次减一进行连续删除,那跟我现在的方法几乎一样啊。我就是没有试出来怎么在for+if语句里使用set/a。
或者是你说的行号方法能够不使用set,一次性直接运算删除多行? |
|
| 第4楼 Hanyeguxing | 发表于 2009-09-03 04:07 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
Originally posted by namelessone at 2009-9-3 03:43: 不管用什么方法,不用if和set /a是不可能的.除非是获取固定行... 按照你在一楼的思路,可以这样写: 好象我写的有点麻烦...... [ Last edited by Hanyeguxing on 2009-9-3 at 04:50 ] |
|
| 第5楼 tireless | 发表于 2009-09-03 04:50 |
| 银牌会员 发帖 1,122 积分 2,025 | |
| 第6楼 namelessone | 发表于 2009-09-03 06:21 |
| 新手上路 发帖 6 积分 7 | |
|
谢谢各位 可以用了 不过暂时还搞不清楚为什么我写的set /a num-=1无法生效
|
|
| 第7楼 Hanyeguxing | 发表于 2009-09-03 06:50 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
if num equ 0 ( ...
作为变量,num必须用%或!括起来,不然永远num不可能等于0,也就无法执行。 set/a num=3 这里不用/a,/a表示运算,而这里显然是直接赋值的。 [ Last edited by Hanyeguxing on 2009-9-3 at 06:54 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |