标题: [其他] 批处理变量作用域的疑问。调用函数后无法获取之前变量。是否有全局变量? [打印本页]
作者: zl7603 时间: 2018-12-27 17:17 标题: 批处理变量作用域的疑问。调用函数后无法获取之前变量。是否有全局变量?
大佬们好_(:з」∠)_
请问一下批处理变量作用域的疑问。调用函数后无法获取之前变量。是否有全局变量?例如:- call :ms
- echo %a%
-
- :ms
- set a=123
- goto :EOF
复制代码
这样并不能取到变量a的值,会提示echo为off,也就是说变量没有创建。
那么我要如何才能取到调用标签处理后的值呢?
批处理有没有return一说?
谢谢大佬!
作者: ivor 时间: 2018-12-27 21:10
为什么非要固守批处理呢,powershell 不行吗,难道你还用的xp系统?
作者: Batcher 时间: 2018-12-27 21:48
在我的Win7里面测试你这段代码没能重现问题
作者: 523066680 时间: 2018-12-28 08:23
老用户表示从来都是这么玩儿的,批处理到处都是全局变量,哪有你说的问题?
作者: SQYSQYSQY 时间: 2019-1-5 22:28
本帖最后由 SQYSQYSQY 于 2019-1-5 22:34 编辑
回复 1# zl7603
请把问题背景说清楚。批处理用的均为全局变量。
你是不是把上面代码写入了()中???如果是,下面代码对你有帮助
原代码:- call :ms
- echo %a%
- :ms
- set a=123
- goto :EOF
复制代码
新代码:- call :ms
- call echo %%a%%
- :ms
- set a=123
- goto :EOF
复制代码
放入一个程序,测试通过。(1~2行放入4~5行。3~5行放入10~12行)- @echo off
- set temp=1
- if "%temp%"=="1" (
- call :ms
- call echo %%a%%
- )
- pause
- exit /b
-
- :ms
- set a=123
- goto :eof
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |