中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 11:09
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何提取文本中第N行到第N行间的内容
可打印版本  815 / 10
第1楼 lovetizz 发表于 2008-08-15 15:43
新手上路 发帖 7 积分 15
如何提取文本中第N行到第N行间的内容
我想实现的是 提取内容后,这些内容在原文本文档中没有了。就是相当于把一个文本中第N行到第N行的内容转移出来。以前讨论过的 都是相当于复制出来,在源文件中还存在。

比如要把 a.txt 中 第 W 行 到第 Y 行的内容提取到b.txt,并且原文中没有了。如何写呢?

[ Last edited by lovetizz on 2008-8-15 at 03:44 PM ]
第2楼 ThinKing 发表于 2008-08-15 17:53
中级用户 发帖 207 积分 471
先把第w行到第y行的内容提取到文件中,同时把去掉这些行的原文件放进临时文件,再用临时文件覆盖原文件。
第3楼 lovetizz 发表于 2008-08-16 00:13
新手上路 发帖 7 积分 15
能不能具体给个代码啊 。。。。
第4楼 lovetizz 发表于 2008-08-16 19:18
新手上路 发帖 7 积分 15
没人解答啊。。。
第5楼 Karman 发表于 2008-08-16 19:33
初级用户 发帖 8 积分 20
没调试过,请楼主自己试一下吧

set /a m=5
set /a n=3
set /a l=m-n+1
set /a nn=%n%
for /f "skip=nn" %%i in(files.txt) (
Call set /a l=%%l%%-1
if %l% les 1 goto next
echo %%i>>result_1.txt
)
:next

以上是提取n行到m行的批处理。
剩下的部分原理相同,相当于先提取1到n-1行的结果到result_2.txt,再
echo rem echo后面有空格

m-n+1次
再将m+1直到末尾输入到result_2.txt。
========
关键的语句是 for /f 语句
其中用 call set 计算循环次数
========
麻烦自己调试一下吧。。。。
第6楼 Karman 发表于 2008-08-16 19:34
初级用户 发帖 8 积分 20
有点儿忙,抱歉
新手要多多试验。。。。
第7楼 HAT 发表于 2008-08-16 22:28
版主 发帖 5,017 积分 9,023
Re 5楼
你这个代码的语法错误太多了吧?
你是想给大家出一个语法改错的题目吗?
第8楼 lovetizz 发表于 2008-08-18 23:12
新手上路 发帖 7 积分 15
。。。。。。

试过了 不行 。。。
第9楼 lovetizz 发表于 2008-08-18 23:12
新手上路 发帖 7 积分 15
没有高手来解答一下? 都去看奥运了。。
第10楼 HAT 发表于 2008-08-19 00:11
版主 发帖 5,017 积分 9,023
有人写过一段代码,你先看看吧,有问题再问。
经常要对文件的指定行进行读取,特写了一个读取文件指定行的小程序段(ReadLine.Bat),方面以后调用。

使用也比较简单:"Call ReadLine <文件名> <跳过的行数> <读取行数>"就可以了。比如在一个批处理里加上一句"Call ReadLine a.txt 5 7",那么将跳过a.txt文件的前5行,显示下面的7行字符,也包含空行。也可以不指定第三个参数。

ReadLine.Bat


第11楼 lovetizz 发表于 2008-08-19 07:16
新手上路 发帖 7 积分 15
谢了
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023