![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 09:55 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]帮忙看一下在if里面设置环境变量为什么会出问题 |
| 可打印版本 1,679 / 3 |
| 第1楼 xilianghe | 发表于 2010-12-15 00:21 |
| 新手上路 发帖 11 积分 11 | |
|
[求助]帮忙看一下在if里面设置环境变量为什么会出问题 下面是个示例
======================== @ECHO OFF ECHO CURPATH0=%PATH% IF "%DATE:~5,2%"=="12" ( ECHO PATH IN=%PATH% SET CURPATH=%PATH% ECHO. SET CURPATH ECHO. ECHO CURPATH999=%CURPATH% CALL d:\T2.BAT>abc.log @ECHO OFF SET PATH=%CURPATH% ) @ECHO ON ==================================== 上述代码中,因为T2.BAT里使用set path=xxx,并没有加上%path%,所以会洗掉系统的环境变量;但我不能改. 所以为了保存,使用了一个中间变量来临时保存一下. 但发现,当在if中执行时,ECHO CURPATH999=%CURPATH%执行结果是 CURPATH999= 而我手动再敲入上述命令后,又能正常显示--也就是说放在bat中始终不正常 可当我去掉if语句时,也就是直接执行上述()内的内容时,该语句就显示正常 为什么呢?太奇怪了.因为只赋值一次,应该用不到setlocal ENABLEDELAYEDEXPANSION吧,况且,似乎也和这个没关系吧 |
|
| 第2楼 Hanyeguxing | 发表于 2010-12-15 00:29 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
必须开变量延迟!~
[ Last edited by Hanyeguxing on 2010-12-15 at 00:51 ] |
|
| 第3楼 xilianghe | 发表于 2010-12-15 09:49 |
| 新手上路 发帖 11 积分 11 | |
|
今早继续试验,发现要把SET CURPATH=%PATH% 提前到if之前的话,不用延迟也是可以正常显示了。
还请能详细解释一下if括号究竟起到了什么作用?是不是所有的括号内外都会有这样的差别? 多谢了! |
|
| 第4楼 acaigg | 发表于 2010-12-25 11:27 |
| 初级用户 发帖 92 积分 115 | |
|
学习一下。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |