中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-28 08:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 当学习有for嵌套的批处理时遇到的问题! 查看 1,095 回复 6
楼 主 当学习有for嵌套的批处理时遇到的问题! 发表于 2007-04-10 21:38 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
比如以下一段代码:
@echo off
for %%a in (c d e f g h i g k) do (
for /f "tokens=*" %%i in ('dir /b/a-d %%a:\"My Music"\哎呀.mp3') do (
set dddd=%%a
)
)

我应该按什么样的顺序来读它?单拿出来的FOR语句我基本都能读懂,可是一套起来我就开始晕了!

想向高手学习一个拆解FOR 嵌套的方法!!!!

[ Last edited by logictianjin on 2007-4-10 at 09:53 AM ]
2 发表于 2007-04-11 00:26 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
一个一个代入啊
3 发表于 2007-04-11 00:32 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
Originally posted by NaturalJ0 at 2007-4-10 11:26 AM:
一个一个代入啊


我明白你的意思,这个范例中只有2个套,如果很多个的话,我就会看晕,看了后面的DO就忘了前面的DO

当阅读这类批处理的时候有没有什么好的阅读方法?
4 发表于 2007-04-11 01:12 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

发个for命令的演示代码出来:

@echo off&SetLocal EnableDelayedExpansion
for /l %%a in (1 1 3) do (
for /l %%b in (1 1 3) do (
for /l %%c in (1 1 3) do (
set /a a+=1
echo 第!a!次循环的结果: a=%%a \ b=%%b \ c=%%c
)
pause
)
)
cls&echo 结束.
pause&exit/b

5 发表于 2007-04-11 11:11 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
楼主,你有福了。
6 发表于 2007-04-12 02:14 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
Originally posted by lxmxn at 2007-4-10 12:12 PM:

发个for命令的演示代码出来:

@echo off&SetLocal EnableDelayedExpansion
for /l %%a in (1 1 3) do (
for /l %%b in (1 1 3) do (
for /l %%c in (1 1 3) do ...


这回彻底晕菜了!!!!!!
如果把这个批处理的运行过程作出详细说明的话,我觉得会对象我这样的新手对于FOR的理解有非常好的帮助!!!
希望看到您的(教程) 期待中!!!
7 发表于 2007-04-12 02:20 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

Re logictianjin:

如果想看到for的运行过程,可以打开命令行回显(echo on),你还可以搜索 willsort 兄关于for命令运行机制的分析说明。

一般对于循环的嵌套,都是从内向外的,也就是里面的循环完了才执行外面的循环。

但总是由外面的循环开始运行整个循环过程。

你可以搜索一下关于for嵌套的相关贴子。
论坛跳转: