Board logo

标题: for循环嵌套中skip的参数问题 [打印本页]

作者: scriptor     时间: 2007-9-13 15:56    标题: for循环嵌套中skip的参数问题

我的意思是:
依次忽略前1,2,....,6行,将文件的内容输出
文件a.txt:
abc
123
name
haha
ddd
sdw
erw
332,l.
a asdfe

我要的结果是
skip=1时,   只输出123
skip=2时,   只输出name
......
skip=6时,   只输出erw


脚本如下:
for /l %%a in (1,1,6) do (
     for /f "delims= skip=%%a" %%b in (a.txt) do (
          echo %%b
     )
)

问题是,这个脚本执行不了
提示为:
  此时不能有%a"

我想了很久
搜索查看了论坛的帖子
还是无解

那位能解释一下
for循环嵌套中的skip=后面能不能使用变量
怎么解决?
作者: scriptor     时间: 2007-9-13 15:57
即使加了
setlocal enabledelayedexpansion

也没有用
作者: ThinKing     时间: 2007-9-13 16:04
try this:
@echo off
for /l %%a in (1,1,6) do call :skip_ %%a
pause&exit/b

:skip_
for /f "delims= skip=%1" %%b in (a.txt) do (
          echo %%b && goto :eof
)

作者: scriptor     时间: 2007-9-13 16:21


  Quote:
Originally posted by ThinKing at 2007-9-13 16:04:
try this:
[code]
@echo off
for /l %%a in (1,1,6) do call :skip_ %%a
pause&exit/b

:skip_
for /f "delims= skip=%1" %%b in (a.txt) do (
          echo %%b && goto :eof
...

好了
这个很好啊


其实我也用过这个技术
不知道哪里错了
所以
我又回到原始的想法
只在for嵌套中用
呵呵,不过还是我错了

谢谢了
代码没有错误!
我得对照一下我的为什么错了
呵呵.....
作者: scriptor     时间: 2007-9-13 16:22
To: Thinking
给你加分吧!
呵呵....
作者: scriptor     时间: 2007-9-13 16:31
再补充下:

最好是能在for的嵌套中解决这个问题
call  和 goto 跳来跳去的
就涉及到代码段位置的安排了
作者: ThinKing     时间: 2007-9-13 19:43
换个思路也可达到目的:
@echo off
for /l %%a in (1,1,6) do (
    for /f "delims=" %%b in ('more +%%a a.txt') do (
        if not defined a echo %%b&&set a=thinking
)
set a=
)
pause

作者: scriptor     时间: 2007-9-13 20:34


  Quote:
Originally posted by ThinKing at 2007-9-13 19:43:
换个思路也可达到目的:
[code]@echo off
for /l %%a in (1,1,6) do (
    for /f "delims=" %%b in ('more +%%a a.txt') do (
        if not defined a echo %%b&&set a=thin ...

这个也可以
只是时间上要比你之前那个慢多了
同样一个文件
这个所花费的时间是之前那一个的40倍

哈哈...
不过技术上来讲
这个要多一点
作者: scriptor     时间: 2007-9-13 20:35
再给你加分吧
嗯.....