|
3391617
初级用户
积分 116
发帖 56
注册 2007-3-7
状态 离线
|
『楼 主』:
新手请教: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中循环跳过行,提取我想要的东西,自己写了以上东西却总实现不了。
不知道错在哪里?怎么改才对呢?
|
|
2007-3-7 05:26 |
|
|
zqz0012005
中级用户
积分 297
发帖 135
注册 2006-10-21
状态 离线
|
『第
2 楼』:
for的4个options:eol skip delims tokens好像不能用变量
|
|
2007-3-7 06:09 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
3 楼』:
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)
)
|
|
2007-3-7 06:17 |
|
|
NaturalJ0
银牌会员
积分 1181
发帖 533
注册 2006-8-14
状态 离线
|
『第
4 楼』:
用 CALL 会比较清楚,而且不会出错。
[ Last edited by NaturalJ0 on 2007-3-7 at 06:23 AM ]
|
|
2007-3-7 06:21 |
|
|
3391617
初级用户
积分 116
发帖 56
注册 2007-3-7
状态 离线
|
『第
5 楼』:
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”吗?:(
|
|
2007-3-7 06:36 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
|
2007-3-7 06:50 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
7 楼』:
一定要用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就行了。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-3-7 07:00 |
|
|
3391617
初级用户
积分 116
发帖 56
注册 2007-3-7
状态 离线
|
『第
8 楼』:
谢谢!目的达到,但过程不大明白,还是得努力学撒- -/
|
|
2007-3-7 07:08 |
|
|
sjzong
新手上路
积分 14
发帖 7
注册 2007-3-2
状态 离线
|
|
2007-3-7 09:32 |
|
|
hizebra
新手上路
积分 19
发帖 5
注册 2007-10-10
状态 离线
|
『第
10 楼』:
延迟不行?
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必须使用形参传递,而不能使用延迟变量?
|
|
2007-12-20 12:49 |
|