中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 11:38
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]for内部和外部变量延迟有何不同
可打印版本  804 / 3
第1楼 btpg 发表于 2010-05-08 12:52
新手上路 发帖 19 积分 17 来自 湖北
[求助]for内部和外部变量延迟有何不同
我想把某文件夹里面的文件进行平均分组:

如下代码就出错:


代码改成这样就可以成功:


哪位能帮忙解释下,这两个代码,有什么本质不同吗?
第2楼 Hanyeguxing 发表于 2010-05-08 14:22
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
1,楼主需要说明自己的设计思路是什么,不然怎么判断代码?
2,第一个怎么出错了?第二怎么对了?
color a
chcp 936多余,默认值
set a=0多余
for %%a in (*) do if not "%%a"=="文件分组.bat" set /a a+=1
set /a a=%a%/30+1
最后a都为1,那不如就直接set a=1
set /p b=接下来将在本文件夹里新建%a%个文件夹,请输入文件夹前缀,然后回车,(直接回车,则会创建1、2、3……30这些文件夹):
for /l %%a in (1 1 30) do (if defined b md %b%%%a
if not defined b md %%a
)
这里只用for /l %%a in (1 1 30) do md %b%%%a就可以了。
set c=0多余。。。
第3楼 btpg 发表于 2010-05-08 14:50
新手上路 发帖 19 积分 17 来自 湖北
Originally posted by Hanyeguxing at 2010-5-8 14:22:
1,楼主需要说明自己的设计思路是什么,不然怎么判断代码?
2,第一个怎么出错了?第二怎么对了?
color a
chcp 936多余,默认值
set a=0多余
for %%a ...

没想到我的程序中有这么多多余的地方,谢谢您的指正


我的本意是:某文件夹中有很多同类文件,我想对其进行平均分组,将这些同类文件放到30个文件夹里面,所以设计了上面的程序,但是第一个程序达不到目的,而第二个可以,对于它们只是setlocal enabledelayedexpansion的位置不同,我想知道,setlocal enabledelayedexpansion放在for 内部和for 外部,有什么不同

[ Last edited by btpg on 2010-5-8 at 14:57 ]
第4楼 Hanyeguxing 发表于 2010-05-08 22:16
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
第二个,启用延迟的环境变量扩展,直到出现匹配的 endlocal ,结束批处理文件中环境更改的本地化,将环境变量还原为匹配 setlocal enabledelayedexpansion 命令前的值
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023