标题: [其他] 批处理setlocal怎样设置一个全局变量? [打印本页]
作者: newswan 时间: 2010-8-27 21:49 标题: 批处理setlocal怎样设置一个全局变量?
setlocal enabledelayedexpansion
......
endlocal
函数中需要用到变量延迟
但,又希望设置一个全局变量
怎么办?
[ 本帖最后由 newswan 于 2010-8-27 22:05 编辑 ]
作者: TX_kakashi 时间: 2010-8-28 09:19
为啥允许变量延迟就不能设置全局变量了?
作者: qq106942397 时间: 2010-8-28 10:03
- set a=88
- setlocal enabledelayedexpansion
- set a=99
-
- endlocal&set a=00
- echo %a%
复制代码
自己观察吓
作者: TX_kakashi 时间: 2010-8-28 12:08
setlocal到endlocal之外设置一个变量就好了呀,我没明白lz为啥说不能设置全局变量了。
作者: newswan 时间: 2010-9-16 02:50
我的意思是,内部的变量值改变,能在外部使用
-
- set a=88
- setlocal enabledelayedexpansion
- set a=99
- endlocal
- echo %a%
复制代码
setlocal内部设置了a=99,但外部的没变,a=88
setlocal、endlocal的变量就是局部的。。即使他们名字相同
作者: FOR 时间: 2010-9-16 03:04
3楼不是给出答案了么.
作者: skdu7e 时间: 2010-9-24 22:06
汗………………
还有这个说法,受教了,呵呵
作者: ckz1211 时间: 2014-2-16 16:26
我的意思是,内部的变量值改变,能在外部使用
setlocal内部设置了a=99,但外部的没变,a=88
setlocal、 ...
newswan 发表于 2010-9-16 02:50
- @echo on
- set a=88
- setlocal enabledelayedexpansion
- set a=99
- endlocal & set /a a=%a%+10
- echo %a%
- pause
复制代码
必须用set /a a=%a%+10
用set /a a=!a!+10会提示运算符不存在
用set /a a+=10和call set /a a=%%a%%+10都是做变量延迟处理,取到的都是Local外部的值
作者: tiandyoin 时间: 2023-2-23 04:06
回复 8# ckz1211
可是 setlocal enabledelayedexpansion 的作用就没体现到了。本来是要取 !! 的值给外部用的呀。
作者: qixiaobin0715 时间: 2023-2-23 09:23
setlocal
...
endlocal
那是没搞明白其作用。
配对使用的意义就是要在它们之间定义和使用变量,一旦执行到endlocal就销毁其间所有自定义变量。所以在外部不可能使用内部变量的值。
作者: Five66 时间: 2023-11-6 21:41
用预处理方式带出变量:- set a=88
- setlocal enabledelayedexpansion
- set a=99
- endlocal&set a=%a%
- echo %a%
- pause
复制代码
用for方式带出变量:- set a=88
- setlocal enabledelayedexpansion
- set a=99
- for %%i in (!a!) do endlocal&set a=%%i
- echo %a%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |