标题: 关闭环境变量延迟后 变量如何使用?
[打印本页]
作者: lqh123108
时间: 2008-12-30 12:51
标题: 关闭环境变量延迟后 变量如何使用?
for /f "tokens=1 delims==页" %%a in ("总20页码第18页") do (
setlocal enabledelayedexpansion
set str=%%a
call set num=!str:总=!
echo !num!
pause
endlocal
)
echo %num%
echo !num!
pause
上面的代码中提取了 20 这个数字
我用FOR去提取,得到了数字
为什么在结束本地环境变量延迟使用后,后面的代码无法显示数字20
而总是显示:
!num!
ECHO 处于打开状态。
[
Last edited by lqh123108 on 2008-12-30 at 13:12 ]
作者: wxcute
时间: 2008-12-30 13:02
endlocal 换 setlocal disabledelayedexpansion
详情查看 setlocal /? 帮助。
=============================
写错,setlocal 最好是放在 for 语句外面。
[
Last edited by wxcute on 2008-12-30 at 14:41 ]
作者: lqh123108
时间: 2008-12-30 13:08
标题: 禁用延迟的环境变量扩展与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 ]
作者: wxcute
时间: 2008-12-30 14:45
标题: 2 楼写错了,不好意思。
最好是把 setlocal enabledelayedexpansion 放在 for 语句前面。
放在 for 里面而不用 endlocal 的话会出现“到达最大递归层”的错误提示。
对应指:
---------------------
setlocal
endlocal
---------------------
setlocal enabledelayedexpansion
endlocal enabledelayedexpansion
---------------------
setlocal disabledelayedexpansion
endlocal disabledelayedexpansion
---------------------
两两对应,其他类似。
作者: lqh123108
时间: 2008-12-30 18:27
标题: 非两两相对,肯定会导致出错吗?
再次感谢!
我经常看到有些程序不是这样两两相对
如我上面所写的:
...
setlocal enabledelayedexpansion
...
endlocal
)
看来是这样原因(不两两相友写法)会造成程序执行到下面后,变量出错了
不知道我这样理解对否?
另外,我这样不对称写,为什么会出错?能逐行解释吗?
作者: HAT
时间: 2008-12-31 01:59
标题: Re 5楼
本版搜索“到达最大递归层”
Q: 如何使用论坛的搜索功能来解决自己的问题?
A: 参考:
http://www.cn-dos.net/forum/viewthread.php?tid=44122#pid308085