Board logo

标题: 如何提取文本中第N行到第N行间的内容 [打印本页]

作者: lovetizz     时间: 2008-8-15 15:43    标题: 如何提取文本中第N行到第N行间的内容

我想实现的是 提取内容后,这些内容在原文本文档中没有了。就是相当于把一个文本中第N行到第N行的内容转移出来。以前讨论过的  都是相当于复制出来,在源文件中还存在。

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

[ Last edited by lovetizz on 2008-8-15 at 03:44 PM ]
作者: ThinKing     时间: 2008-8-15 17:53
先把第w行到第y行的内容提取到文件中,同时把去掉这些行的原文件放进临时文件,再用临时文件覆盖原文件。
作者: lovetizz     时间: 2008-8-16 00:13
能不能具体给个代码啊 。。。。
作者: lovetizz     时间: 2008-8-16 19:18
没人解答啊。。。
作者: Karman     时间: 2008-8-16 19:33    标题: 没调试过,请楼主自己试一下吧



  Quote:
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,再

  Quote:
echo rem echo后面有空格

m-n+1次
再将m+1直到末尾输入到result_2.txt。
========
关键的语句是 for /f 语句
其中用 call set 计算循环次数
========
麻烦自己调试一下吧。。。。
作者: Karman     时间: 2008-8-16 19:34    标题: 有点儿忙,抱歉

新手要多多试验。。。。
作者: HAT     时间: 2008-8-16 22:28    标题: Re 5楼

你这个代码的语法错误太多了吧?
你是想给大家出一个语法改错的题目吗?
作者: lovetizz     时间: 2008-8-18 23:12
。。。。。。

试过了 不行 。。。
作者: lovetizz     时间: 2008-8-18 23:12
没有高手来解答一下? 都去看奥运了。。
作者: HAT     时间: 2008-8-19 00:11
有人写过一段代码,你先看看吧,有问题再问。

  Quote:
经常要对文件的指定行进行读取,特写了一个读取文件指定行的小程序段(ReadLine.Bat),方面以后调用。

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

ReadLine.Bat


@echo off&SetLocal ENABLEDELAYEDEXPANSION
if "%1"=="" (goto --help) else (set file=%~s1)
if "%2"=="" (set first="delims=: tokens=1*") else (set first="skip=%2 delims=: tokens=1*")
if "%3"=="" (
        for /f %first% %%a in ('findstr /n .* %file%') do echo/%%b
        goto :EOF
)
set last=%3
set loop=0
for /f %first% %%a in ('findstr/n .* %file%') do (
        if not defined lxmxn (echo/%%b&set /a loop+=1) else (goto :EOF)
        if "!loop!"=="%last%" set lxmxn=Nothing
)
GOTO :EOF

:--help
echo/======================================
echo/本程序段需要带参数才能正常运行
echo/&echo/Usage:&echo/Call ReadLine ^<文件名^> ^<跳过行数^> ^<读取行数^>
echo/&echo/例如:call ReadLine aa.txt 5 7 ,将跳过aa.txt文件的前5行,读取下面的7行字符
echo/&echo/如果^<跳过行数^>没有指定,就从文件第一行读取
echo/&echo/指定^<读取行数^>时必须指定^<跳过行^>
echo/======================================
goto :eof

作者: lovetizz     时间: 2008-8-19 07:16
谢了