![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 17:49 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » "小函数"来对文件指定行的读取(ReadLine.bat) |
| 可打印版本 5,436 / 12 |
| 第1楼 lxmxn | 发表于 2007-03-19 05:25 |
| 版主 发帖 4,938 积分 11,386 | |
|
"小函数"来对文件指定行的读取(ReadLine.bat) 经常要对文件的指定行进行读取,特写了一个读取文件指定行的小程序段(ReadLine.Bat),方面以后调用。 使用也比较简单:"Call ReadLine <文件名> <跳过的行数> <读取行数>"就可以了。比如在一个批处理里加上一句"Call ReadLine a.txt 5 7",那么将跳过a.txt文件的前5行,显示下面的7行字符,也包含空行。也可以不指定第三个参数。 ReadLine.Bat |
|
| 第2楼 baomaboy | 发表于 2007-03-19 05:28 |
| 银牌会员 发帖 554 积分 1,513 | |
|
好啊 不过p看的我头晕,要是再转个VBS的就好了
|
|
| 第3楼 vkill | 发表于 2007-03-19 07:00 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
我不知道要是处理N W行的文件效率怎么样
|
|
| 第4楼 lxmxn | 发表于 2007-03-19 07:18 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by vkill at 2007-3-18 18:00: 兄的这个问题倒没有想过,估计这个小函数只能处理一些小的文本吧,大了就不行啦。 |
|
| 第5楼 xycoordinate | 发表于 2007-03-20 00:12 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
8c
study |
|
| 第6楼 electronixtar | 发表于 2007-03-20 02:19 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
支持,顶
|
|
| 第7楼 tclgb | 发表于 2007-07-09 13:30 |
| 初级用户 发帖 26 积分 76 | |
|
我暂时想不到用版主的文件只读取第一行的方法,所以擅自改动了一下,把参数2和参数3换了一下位置,用ReadLine a.txt 1即可读取第一行,用ReadLine a.txt 1 1读取第二行。谢谢版主,这个文件很好用,同时还望版主见谅。
[ Last edited by tclgb on 2007-7-9 at 01:31 PM ] |
|
| 第8楼 59fei | 发表于 2007-07-09 14:55 |
| 初级用户 发帖 23 积分 60 | |
Originally posted by tclgb at 2007-7-9 01:30 PM: 跳过行数是零不就能读取第一行了吗? |
|
| 第9楼 willsion | 发表于 2007-07-09 15:49 |
| 高级用户 发帖 312 积分 793 | |
|
都是高手。。。。。。。。。。
|
|
| 第10楼 tclgb | 发表于 2007-07-09 21:25 |
| 初级用户 发帖 26 积分 76 | |
|
Re:59fei
59fei兄可以运行原文件的ReadLine a.txt 0 1,看有什么提示,在我这里会提示错误 |
|
| 第11楼 payxl | 发表于 2007-07-09 21:32 |
| 初级用户 发帖 14 积分 26 | |
|
又学到不少知识
|
|
| 第12楼 z060053 | 发表于 2008-07-25 14:10 |
| 新手上路 发帖 2 积分 4 | |
|
你这个写的有点复杂。其实解决办法可以简化一点。
@echo off setlocal EnableDelayedExpansion set loop=0 set /a skipline=%2-1 for /f "tokens=1 skip=%skipline% delims=" %%a in (%1) do ( set /a loop=!loop!+1 if "!loop!" leq "%3" (echo %%a) else goto :eof ) goto :eo |
|
| 第13楼 hfxiang | 发表于 2022-07-04 16:14 |
| 新手上路 发帖 1 积分 1 | |
|
测试以上各楼层大神的版本,好像用起来总有点不手,擅自改动如下,自用时目前满足所有情况,还请多指教。
:ReadLine <DataFileName> <skipline> <readline> :: DataFileName 待读入文件 :: skipline 跳过行数,空或非有效数字则默认为0 :: readline 读取行数,空或非有效数字则默认为0,0则表示为剩余的全部 @echo off&SetLocal ENABLEDELAYEDEXPANSION if "%1"=="" goto :--help set /a loop=0 set /a skipline=%~2+0 set /a readline=%~3+0 if %skipline% lss 1 ( set "for_var=usebackq tokens=1 delims=" ) else ( set "for_var=usebackq tokens=1 skip=%skipline% delims=" ) if %readline% lss 1 ( set /a step=0 set /a readline=1 ) else ( set /a step=1 ) for /f "%for_var%" %%a in ("%~f1") do ( set /a loop+=step if !loop! leq %readline% (echo %%a) else goto :eof ) 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 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |