楼 主
用了两次call,变量怎么没了???
发表于 2009-03-20 00:55 · 中国 江苏 苏州 电信
初级用户
★
积分 26
发帖 26
注册 2009-01-04 13:58
17年会员
UID 135741
性别 男
状态 离线
代码如下:
@echo off
call :A
echo %M%
pause
:A
if 1==1 (
setlocal enabledelayedexpansion
set N=abc
call :B !N!
echo !M!
endlocal
goto :eof
)
:B
set M=%1
echo %M%
goto :eof
为什么前两个%M%显示出来了,第三个却是空值,大家帮忙看下,谢谢了!
[
Last edited by xuleicz on 2009-3-20 at 00:58 ]
第 2 楼
发表于 2009-03-20 01:07 · 中国 江苏 苏州 电信
初级用户
★
积分 26
发帖 26
注册 2009-01-04 13:58
17年会员
UID 135741
性别 男
状态 离线
谢谢LS的,可以了,但是我的为什么不行呢,能否麻烦解释下呢?
2楼怎么没了??????
[ Last edited by xuleicz on 2009-3-20 at 01:11 ]
第 3 楼
发表于 2009-03-20 01:11 · 中国 广东 中山 电信
新手上路
★
积分 12
发帖 15
注册 2009-02-17 13:15
17年会员
UID 139068
性别 男
状态 离线
@echo off
call :A
echo m1:%M%
pause
:A
if 1==1 (
setlocal enabledelayedexpansion
set N=abc
call :B !N!
echo m2:!M!
rem endlocal
goto :eof
)
:B
set M=%1
echo m3:%M%
goto :eof
OK了,我把你的endlocal rem 掉了,你把延迟变量结束掉了,还怎么返回M1那里啊。
第 4 楼
发表于 2009-03-20 02:05 · 中国 江苏 苏州 电信
初级用户
★
积分 26
发帖 26
注册 2009-01-04 13:58
17年会员
UID 135741
性别 男
状态 离线
DwD,你rem掉endlocal还是不行啊,只有在开头就用setlocal才行。
似乎setlocal放在括号或标签里都不能达到要求!只能放开头?
论坛跳转: