![]() |
中国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: 没想到我的程序中有这么多多余的地方,谢谢您的指正 我的本意是:某文件夹中有很多同类文件,我想对其进行平均分组,将这些同类文件放到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 |