标题: 新手请教:for 嵌套问题
[打印本页]
作者: 3391617
时间: 2007-3-7 05:26
标题: 新手请教:for 嵌套问题
刚接触批处理,让for嵌套循环弄的头疼死料~~!! 请指点:
for /l %%h in (5,-1,1) do (
for /f "skip=%%h tokens=1 delims=-" %%i in (a.txt) do (echo %%i >>b.txt)
)
我的目的是想改变skip这个参数,实现从b.txt中循环跳过行,提取我想要的东西,自己写了以上东西却总实现不了。
不知道错在哪里?怎么改才对呢?
作者: zqz0012005
时间: 2007-3-7 06:09
for的4个options:eol skip delims tokens好像不能用变量
作者: everest79
时间: 2007-3-7 06:17
for /l %%h in (5,-1,1) do (
set xx=%%h
for /f "skip=!xx! tokens=1 delims=-" %%i in (a.txt) do (echo %%i >>b.txt)
)
作者: NaturalJ0
时间: 2007-3-7 06:21
用 CALL 会比较清楚,而且不会出错。
[
Last edited by NaturalJ0 on 2007-3-7 at 06:23 AM ]
作者: 3391617
时间: 2007-3-7 06:36
Quote: |
Originally posted by everest79 at 2007-3-6 05:17 PM:
for /l %%h in (5,-1,1) do (
set xx=%%h
for /f "skip=!xx! tokens=1 delims=-" %%i in (a.txt) do (echo %%i >>b.txt)
) |
|
这个方法还是不好用哦,实现不了,难道只能用“call”+“/1”吗?:(
作者: everest79
时间: 2007-3-7 06:50
这个要开启延缓
作者: ccwan
时间: 2007-3-7 07:00
一定要用skip?
下面给出一个不用它的演示代码
@echo off & setlocal enabledelayedexpansion
for /l %%h in (5,-1,1) do (
set num=%%h
for /f "tokens=1 delims=-" %%i in ('more/e +!num! ^< a.txt') do echo %%i
)
pause
用skip的话,用call的代码
@echo off
for /l %%h in (5,-1,1) do call :begin %%h
pause&exit
:begin
set %%h=%1
for /f "skip=%1 tokens=1 delims=-" %%i in (a.txt) do echo %%i
goto :eof
如果要达到目的,将echo %%i改成echo %%i >>b.txt就行了。
作者: 3391617
时间: 2007-3-7 07:08
谢谢!目的达到,但过程不大明白,还是得努力学撒- -/
作者: sjzong
时间: 2007-3-7 09:32
标题: dd
难
作者: hizebra
时间: 2007-12-20 12:49
标题: 延迟不行?
Quote: |
Originally posted by everest79 at 2007-3-6 17:50:
这个要开启延缓 |
|
在CMD@WinXP下实测,程序前面加setlocal enabledelayedexpansion仍不成立,
提示~~不应有!xx! tokens=1 delims=-"~~字样,
用call可以实现,BTW,7楼:begin标签后第一条语句set %%h=%1可省略。
请问为什么for嵌套替换options必须使用形参传递,而不能使用延迟变量?