Board logo

标题: 请教 关于显示文件某行的问题 [打印本页]

作者: star8289     时间: 2007-3-27 02:24    标题: 请教 关于显示文件某行的问题

本想问题不难,羞于拿出来提问,又有些懒惰,不大愿意发贴出来。不过既然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 的值呢?
作者: lxmxn     时间: 2007-3-27 03:27

To star8289:

  去下面这两个帖子看看?

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

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

作者: everest79     时间: 2007-3-27 03:43
支持拖放,显示参数格式
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

作者: star8289     时间: 2007-3-27 04:19
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 ]
作者: 9527     时间: 2007-3-27 05:05
复杂并不是一件好事儿,简单才是真理.......
作者: bjsh     时间: 2007-3-27 05:25
re ls的