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
Originally posted by ThinKing at 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
...


好了
这个很好啊


其实我也用过这个技术
不知道哪里错了
所以
我又回到原始的想法
只在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
Originally posted by ThinKing at 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=thin ...


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

哈哈...
不过技术上来讲
这个要多一点

作者: scriptor     时间: 2007-9-13 20:35
再给你加分吧
嗯.....