中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关闭环境变量延迟后 变量如何使用?
作者:
标题: 关闭环境变量延迟后 变量如何使用? 上一主题 | 下一主题
lqh123108
初级用户





积分 30
发帖 24
注册 2008-10-20
状态 离线
『楼 主』:  关闭环境变量延迟后 变量如何使用?

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 ]


2008-12-30 12:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 2 楼』:  

endlocal 换 setlocal disabledelayedexpansion 详情查看 setlocal /? 帮助。 ============================= 写错,setlocal 最好是放在 for 语句外面。 [ Last edited by wxcute on 2008-12-30 at 14:41 ]




┌───────┐ ├→学习→实践→┤ └───────┘
2008-12-30 13:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lqh123108
初级用户





积分 30
发帖 24
注册 2008-10-20
状态 离线
『第 3 楼』:  禁用延迟的环境变量扩展与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 ]


2008-12-30 13:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 4 楼』:  2 楼写错了,不好意思。

最好是把 setlocal enabledelayedexpansion 放在 for 语句前面。 放在 for 里面而不用 endlocal 的话会出现“到达最大递归层”的错误提示。 对应指: --------------------- setlocal endlocal --------------------- setlocal enabledelayedexpansion endlocal enabledelayedexpansion --------------------- setlocal disabledelayedexpansion endlocal disabledelayedexpansion --------------------- 两两对应,其他类似。




┌───────┐ ├→学习→实践→┤ └───────┘
2008-12-30 14:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lqh123108
初级用户





积分 30
发帖 24
注册 2008-10-20
状态 离线
『第 5 楼』:  非两两相对,肯定会导致出错吗?

再次感谢! 我经常看到有些程序不是这样两两相对 如我上面所写的: ... setlocal enabledelayedexpansion ... endlocal ) 看来是这样原因(不两两相友写法)会造成程序执行到下面后,变量出错了 不知道我这样理解对否? 另外,我这样不对称写,为什么会出错?能逐行解释吗?


2008-12-30 18:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  Re 5楼

本版搜索“到达最大递归层” Q: 如何使用论坛的搜索功能来解决自己的问题? A: 参考:www.cn-dos.net/forum ...




2008-12-31 01:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: