中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助]怎么实现从一个文件中读取指定行数的文本
作者:
标题: 求助]怎么实现从一个文件中读取指定行数的文本 上一主题 | 下一主题
naughtypack
初级用户





积分 68
发帖 25
注册 2008-4-8
状态 离线
『楼 主』:  求助]怎么实现从一个文件中读取指定行数的文本

我现在有一个文件里面的格式是
419720  168950  168940  168939  168945  169105  169165  169177  
419721  169105  169165  169177  169189  169104  169164  169176  
419722  169104  169164  169176  169188  169103  169163  169175  
419723  169103  169163  169175  169187  169102  169162  169174  
419724  169102  169162  169174  169186  169101  169161  169173  
419725  169101  169161  169173  169185  169100  169160  169172  
419726  169100  169160  169172  169184  169099  169159  169171  
。。。。。。。
很多行
我现在想用批处理把他从第一行到1000行写到另外一个文件里面比如就叫2.dat
或者从第二行到100行写到另外一个新的文件3.dat.请问有什么办法没,谢谢

2008-5-7 22:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

看下for的帮助……和论坛的例子

2008-5-7 22:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
    set /a n+=1
  if !n! equ 1001 echo 写入完成&pause>nul&goto :eof
    echo %%i>>2.bat
)
[ Last edited by zw19750516 on 2008-5-7 at 10:44 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 naughtypack 分数: +2  时间:2008-5-8 14:19




批处理之家新域名:www.bathome.net
2008-5-7 22:42
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

有人贴过:

  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



   此帖被 +2 点积分    点击查看详情   
评分人:【 naughtypack 分数: +2  时间:2008-5-8 14:18


2008-5-7 22:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: