level 12
请问一下bat是否存在变量作用域的问题?Call一个标签之后并不能得到goto :EOF之前的变量值。
例如:
call :ms 123 456
echo %abc%
:ms
set abc=123
goto :EOF
这个时候只会输出"echo 为关闭状态"。换言之就是变量abc不存在。
所以bat还存在变量作用域嘛?
这种情况有什么好的解法?我需要拿到一个函数(标签)处理完的一个值。
批处理好像也没有return这种说法。很讨厌。
2018年12月27日 09点12分
1
level 8
@echo off
call :ms
echo %abc%
:ms
set abc=123
goto :eof
获取正常
2018年12月27日 09点12分
4
%1 %2不影响 (你代码里也没有调用参数1 和参数2的地方= =就是调用程序赋值的= = )
2018年12月27日 09点12分
@冷漠无情夜狼 谢谢。是我之前把用到变量的地方放在了一个if里面。我也还不清楚为什么会有这种情况。
2018年12月27日 11点12分
@zl7603 CMD预处理机制,开启变量延迟!试试
2018年12月27日 23点12分