[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理变量作用域的疑问。调用函数后无法获取之前变量。是否有全局变量?

大佬们好_(:з」∠)_
请问一下批处理变量作用域的疑问。调用函数后无法获取之前变量。是否有全局变量?例如:
  1. call :ms
  2. echo %a%
  3. :ms
  4. set a=123
  5. goto :EOF
复制代码
这样并不能取到变量a的值,会提示echo为off,也就是说变量没有创建。
那么我要如何才能取到调用标签处理后的值呢?
批处理有没有return一说?
谢谢大佬!

为什么非要固守批处理呢,powershell 不行吗,难道你还用的xp系统?

TOP

在我的Win7里面测试你这段代码没能重现问题
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

老用户表示从来都是这么玩儿的,批处理到处都是全局变量,哪有你说的问题?

TOP

本帖最后由 SQYSQYSQY 于 2019-1-5 22:34 编辑

回复 1# zl7603


    请把问题背景说清楚。批处理用的均为全局变量。
你是不是把上面代码写入了()中???如果是,下面代码对你有帮助

原代码:
  1. call :ms
  2. echo %a%
  3. :ms
  4. set a=123
  5. goto :EOF
复制代码
新代码:
  1. call :ms
  2. call echo %%a%%
  3. :ms
  4. set a=123
  5. goto :EOF
复制代码
放入一个程序,测试通过。(1~2行放入4~5行。3~5行放入10~12行)
  1. @echo off
  2. set temp=1
  3. if "%temp%"=="1" (
  4. call :ms
  5. call echo %%a%%
  6. )
  7. pause
  8. exit /b
  9. :ms
  10. set a=123
  11. goto :eof
复制代码

TOP

返回列表