中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教 关于显示文件某行的问题
作者:
标题: 请教 关于显示文件某行的问题 上一主题 | 下一主题
star8289
新手上路





积分 12
发帖 5
注册 2007-3-15
状态 离线
『楼 主』:  请教 关于显示文件某行的问题

本想问题不难,羞于拿出来提问,又有些懒惰,不大愿意发贴出来。不过既然lxman前辈提议,就在这里广征博议,:)

@echo off & setlocal ENABLEEXTENSIONS
set "lines=3"
set i=0
set "ok="
for /f "delims=" %%a in ('more ^< 1.txt') do (
  set i+=1 & if "%%i"=="%lines%" set ok=1
  echo %%i
  if not defined ok echo %%a
)
pause

显示1.txt文件中的第3行
那如果用定义ok变量的方法显示前三行呢?
怎样在do里面显示 i 的值呢?

2007-3-27 02:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


To star8289:

  去下面这两个帖子看看?

  http://www.cn-dos.net/forum/view ... ighlight=%2Bbagpipe

  http://www.cn-dos.net/forum/viewthread.php?tid=28671&fpage=1


2007-3-27 03:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 3 楼』:  

支持拖放,显示参数格式
1+1,表示由第一行开始显示,只显示一行
1+0,表示由第二行开始显示,显示之后所有行
@echo off 2>nul 3>nul
if "%~1" == "" (set/pfile=file:) else (set file=%~1)
if "%~2" == "" (set/pline="line?(1+3):") else (set line=%~2)
for /f "delims=+" %%i in ("%line%") do set/asta=%%i-1,stb=%line%-1||goto end
for /f "usebackq delims=" %%i in ("%file%") do (
set/ax+=1,1/^(sta/x^)||echo ^>%%i
set/aa+=1,1/^(a-stb^)||goto end
)

:end
echo 以上是%file%的第%sta%至%stb%行,若没有显示可能是输入错误
pause


2007-3-27 03:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
star8289
新手上路





积分 12
发帖 5
注册 2007-3-15
状态 离线
『第 4 楼』:  

3ks ,:)
我想是我没注意到 enableextension 和 enabledelayedexpansion  的区别;
改后可行的是:
@echo off & setlocal enabledelayedexpansion
set "lines=3"
set i=-1
set "ok="
for /f "delims=" %%a in ('more ^< 1.txt') do (
  set /A i+=1 & if "!i!"=="%lines%"  set ok=1
  echo !i!
  if not  defined ok echo %%a

)
pause

3楼的方法貌似比较复杂,我再研究研究!

[ Last edited by star8289 on 2007-3-26 at 03:39 PM ]

2007-3-27 04:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 5 楼』:  

复杂并不是一件好事儿,简单才是真理.......



我今后在论坛的目标就是做个超级坏人!!!
2007-3-27 05:05
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 6 楼』:  

re ls的

2007-3-27 05:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: