中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 02:34
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 关闭环境变量延迟后 变量如何使用?
可打印版本  858 / 5
第1楼 lqh123108 发表于 2008-12-30 12:51
初级用户 发帖 24 积分 30
关闭环境变量延迟后 变量如何使用?


上面的代码中提取了 20 这个数字
我用FOR去提取,得到了数字
为什么在结束本地环境变量延迟使用后,后面的代码无法显示数字20
而总是显示:
!num!
ECHO 处于打开状态。

[ Last edited by lqh123108 on 2008-12-30 at 13:12 ]
第2楼 wxcute 发表于 2008-12-30 13:02
中级用户 发帖 211 积分 458
endlocal 换 setlocal disabledelayedexpansion
详情查看 setlocal /? 帮助。

=============================
写错,setlocal 最好是放在 for 语句外面。

[ Last edited by wxcute on 2008-12-30 at 14:41 ]
第3楼 lqh123108 发表于 2008-12-30 13:08
初级用户 发帖 24 积分 30
禁用延迟的环境变量扩展与endlocal有区别吗?
多谢了

enableextension
启用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
disableextensions
禁用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
enabledelayedexpansion
启用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
disabledelayedexpansion
禁用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。

上面这几个参数,看了真的不太懂?
另外,你改成这样,不等于还是没有关闭环境变量扩展吗?
这与直接删除endlocal有什么区别吗?


呵呵,看帮助太难了,主要是没有实例呀!


[ Last edited by lqh123108 on 2008-12-30 at 13:11 ]
第4楼 wxcute 发表于 2008-12-30 14:45
中级用户 发帖 211 积分 458
2 楼写错了,不好意思。
最好是把 setlocal enabledelayedexpansion 放在 for 语句前面。
放在 for 里面而不用 endlocal 的话会出现“到达最大递归层”的错误提示。
对应指:
---------------------
setlocal
endlocal
---------------------
setlocal enabledelayedexpansion
endlocal enabledelayedexpansion
---------------------
setlocal disabledelayedexpansion
endlocal disabledelayedexpansion
---------------------
两两对应,其他类似。
第5楼 lqh123108 发表于 2008-12-30 18:27
初级用户 发帖 24 积分 30
非两两相对,肯定会导致出错吗?
再次感谢!

我经常看到有些程序不是这样两两相对

如我上面所写的:
...
setlocal enabledelayedexpansion
...
endlocal
)

看来是这样原因(不两两相友写法)会造成程序执行到下面后,变量出错了

不知道我这样理解对否?

另外,我这样不对称写,为什么会出错?能逐行解释吗?
第6楼 HAT 发表于 2008-12-31 01:59
版主 发帖 5,017 积分 9,023
Re 5楼
本版搜索“到达最大递归层”

Q: 如何使用论坛的搜索功能来解决自己的问题?
A: 参考:http://www.cn-dos.net/forum/viewthread.php?tid=44122#pid308085
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023