找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 50571|回复: 11

[其他] 批处理setlocal怎样设置一个全局变量?

[复制链接]
发表于 2010-8-27 21:49:56 | 显示全部楼层 |阅读模式
setlocal enabledelayedexpansion
......
endlocal

函数中需要用到变量延迟
但,又希望设置一个全局变量

怎么办?

[ 本帖最后由 newswan 于 2010-8-27 22:05 编辑 ]
发表于 2010-8-28 09:19:07 | 显示全部楼层
为啥允许变量延迟就不能设置全局变量了?
发表于 2010-8-28 10:03:26 | 显示全部楼层
  1. set  a=88
  2. setlocal enabledelayedexpansion
  3. set  a=99

  4. endlocal&set  a=00
  5. echo %a%
复制代码
自己观察吓
发表于 2010-8-28 12:08:55 | 显示全部楼层
setlocal到endlocal之外设置一个变量就好了呀,我没明白lz为啥说不能设置全局变量了。
 楼主| 发表于 2010-9-16 02:50:46 | 显示全部楼层
我的意思是,内部的变量值改变,能在外部使用

  1. set  a=88
  2. setlocal enabledelayedexpansion
  3. set  a=99
  4. endlocal
  5. echo %a%
复制代码

setlocal内部设置了a=99,但外部的没变,a=88
setlocal、endlocal的变量就是局部的。。即使他们名字相同
发表于 2010-9-16 03:04:07 | 显示全部楼层
3楼不是给出答案了么.
发表于 2010-9-24 22:06:29 | 显示全部楼层
汗………………
还有这个说法,受教了,呵呵
发表于 2014-2-16 16:26:17 | 显示全部楼层
我的意思是,内部的变量值改变,能在外部使用

setlocal内部设置了a=99,但外部的没变,a=88
setlocal、 ...
newswan 发表于 2010-9-16 02:50
  1. @echo on
  2. set  a=88
  3. setlocal enabledelayedexpansion
  4. set  a=99
  5. endlocal & set /a a=%a%+10
  6. echo %a%
  7. pause
复制代码
必须用set /a a=%a%+10
用set /a a=!a!+10会提示运算符不存在
用set /a a+=10和call set /a a=%%a%%+10都是做变量延迟处理,取到的都是Local外部的值
发表于 2023-2-23 04:06:01 | 显示全部楼层
回复 8# ckz1211


    可是 setlocal enabledelayedexpansion 的作用就没体现到了。本来是要取 !! 的值给外部用的呀。
发表于 2023-2-23 09:23:07 | 显示全部楼层
setlocal
...
endlocal
那是没搞明白其作用。
配对使用的意义就是要在它们之间定义和使用变量,一旦执行到endlocal就销毁其间所有自定义变量。所以在外部不可能使用内部变量的值。
发表于 2023-11-6 21:41:12 | 显示全部楼层
用预处理方式带出变量:

  1. set  a=88
  2. setlocal enabledelayedexpansion
  3. set  a=99
  4. endlocal&set  a=%a%
  5. echo %a%
  6. pause
复制代码
用for方式带出变量:

  1. set  a=88
  2. setlocal enabledelayedexpansion
  3. set  a=99
  4. for %%i in (!a!) do endlocal&set a=%%i
  5. echo %a%
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
77七 + 1 感谢分享

查看全部评分

发表于 2024-12-27 23:52:21 | 显示全部楼层
这个内部变量带到外部使用,困惑我许久,
之前这么做的,内部用call :waibu %a%方式带出变量,麻烦的一笔,全部都是:waibu ...  goto:eof的结构
今天总算明白,原来如此简单
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:29 , Processed in 0.020798 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表