首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使环境变量在ENDLOCAL中生效

在 Windows 批处理脚本中,ENDLOCAL 命令会结束本地化环境变量的作用范围,这意味着在 ENDLOCAL 之前设置的环境变量会被还原为 SETLOCAL 之前的状态。如果你希望在 ENDLOCAL 之后仍然保留某些环境变量的值,可以使用一种特殊的技巧来实现。

方法:使用 SET 命令和 ENDLOCAL 的组合

你可以在 ENDLOCAL 命令之前使用 SET 命令将环境变量的值传递到 ENDLOCAL 之后。以下是一个示例脚本,展示了如何实现这一点:

代码语言:javascript
复制
@echo off
SETLOCAL

REM 设置环境变量
set MY_VAR=HelloWorld

REM 打印环境变量的值
echo Before ENDLOCAL: %MY_VAR%

REM 使用特殊技巧在 ENDLOCAL 之后保留环境变量
ENDLOCAL & set MY_VAR=%MY_VAR%

REM 打印环境变量的值
echo After ENDLOCAL: %MY_VAR%

解释

  1. SETLOCAL: SETLOCAL 这行代码开始本地化环境变量的作用范围。
  2. 设置环境变量: set MY_VAR=HelloWorld 这行代码设置一个名为 MY_VAR 的环境变量。
  3. 打印环境变量的值: echo Before ENDLOCAL: %MY_VAR% 这行代码打印 ENDLOCAL 之前环境变量 MY_VAR 的值。
  4. 使用特殊技巧在 ENDLOCAL 之后保留环境变量: ENDLOCAL & set MY_VAR=%MY_VAR% 这行代码使用 ENDLOCAL 结束本地化环境变量的作用范围,并立即使用 SET 命令将 MY_VAR 的值重新设置为 ENDLOCAL 之前的值。& 符号用于在同一行中执行多个命令。
  5. 打印环境变量的值: echo After ENDLOCAL: %MY_VAR% 这行代码打印 ENDLOCAL 之后环境变量 MY_VAR 的值,验证其是否被保留。

注意事项

  • 变量扩展:在 ENDLOCAL 之前,环境变量的值会被扩展并传递到 ENDLOCAL 之后。这意味着如果环境变量的值包含其他环境变量的引用,这些引用会在 ENDLOCAL 之前被解析。
  • 多个变量:如果你需要保留多个环境变量,可以在 ENDLOCAL 之后使用多个 SET 命令。例如:复制ENDLOCAL & set VAR1=%VAR1% & set VAR2=%VAR2%

示例:保留多个环境变量

以下是一个示例脚本,展示了如何在 ENDLOCAL 之后保留多个环境变量:

代码语言:javascript
复制
@echo off
SETLOCAL

REM 设置环境变量
set VAR1=Value1
set VAR2=Value2

REM 打印环境变量的值
echo Before ENDLOCAL: VAR1=%VAR1%, VAR2=%VAR2%

REM 使用特殊技巧在 ENDLOCAL 之后保留环境变量
ENDLOCAL & set VAR1=%VAR1% & set VAR2=%VAR2%

REM 打印环境变量的值
echo After ENDLOCAL: VAR1=%VAR1%, VAR2=%VAR2%

通过这种方法,你可以确保在 ENDLOCAL 之后仍然保留所需的环境变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 怎样Ubuntu设置环境变量

    单击屏幕左上角的Ubuntu图标,弹出的窗口中点击搜索栏,输入“terminal”, 稍等片刻,终端就会赫然目!二话不说,直接点击! 然后打开环境设置文件。...终端输入"sudo gedit /etc/profile",回车,然后输入管理员密码后回车,即可打开。 加入环境变量设置语句。...Linux系统,设置环境变量的语句是: export = 我们只需在这里新开一行,按照这个格式填写即可。...回到终端,输入"source /etc/profile",回车,即可让我们的环境变量生效。 最后,检验一下效果! 我们用echo回显命令,看看环境变量有没有生效。...不必担心,重启系统,让环境变量的设置完全生效。 注意事项 设置的环境变量名不能与系统已有的相同,如PATH,否则会导致系统出问题!

    9.7K10

    JMeterLinux系统环境变量配置

    环境变量配置 为指定用户配置环境变量,是通过用户目录下的用户配置文件{.bash_profile}实现的,此文件为隐藏文件,可通过 ll -al 查看。...将JMeter的环境变量配置文件,即可实现指定用户的环境配置。...jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin 为所有用户配置环境变量...,是通过修改系统变量配置实现的,添加的内容同指定用户的一致,只需要在配置时注意原有环境变量的引用即可 $ vi /etc/profile #修改内容同以上用户环境变量配置 修改配置文件后,执行如下命令使配置生效...: # 指定用户: $ source ~/.bash_profile # 系统变量: $ source /etc/profile 验证: $ jmeter --version #输出信息包含以下内容即配置成功

    3.6K30

    VS通过建立依赖关系使文件结构更清晰

    一个Web应用,当你添加一个Web页面的时候,VS实际上会为你创建三个文件:Xxx.aspx, Xxx.aspx.cs和Xxx.aspx.designer.cs,后面两个文件(依赖文件)依赖于第一个文件...目录 一、文件依赖达到的效果 二、文件依赖关系定义Project文件 三、通过VS插件建立两个文件之间的依赖关系 一、文件依赖达到的效果 对于项目文件之间的依赖关系...默认的情况下,View和PresenterVS处于同一个级别,如果能够建立起它们之间的依赖关系,让Presenter文件嵌套在View文件下,在结构上将显得更加清晰(如左图所示)。 ?...再举一个例子,《如何让ASP.NET默认的资源编程方式支持非.ResX资源存储》一文,我提供了一种通过自定义ResourceProvider让ASP.NET默认的资源编成模式支持不同形式的资源存储形式...二、文件依赖关系定义Project文件 目录结构来讲,主文件和依赖文件处于相同的层级,它们的依赖关系实际上是通过Project文件(.csproj文件或者.vbproj文件)来定义的。

    1.7K110

    解锁环境变量云原生应用的各种姿势

    “12-Factors App:Store config in the environment ① 外挂配置文件:业务配置 appsettings.json “ 可以代码要求加载appsetting.serect.json...电脑还可以-[我的电脑]-[高级设置]-[环境变量]操作 Visual Studio IDE launchsettings.json 设置进程级别环境变量 { "profiles": {...从env_file配置节加载环境变量文件 “① 文件环境变量并不会自动应用到容器,需要在Compose yml文件以${}引用 ② docker-compose命令默认从命令执行的同一目录寻找....env文件 Dockerfile内置环境变量 ASP.NETCore3.1 Runtime镜像作为基础镜像的应用, 会发现应用使用Production配置80端口提供服务。...你可以为运行在Pod的容器设置环境变量,利用env和envFrom配置节。

    1.7K30

    Linux操作系统修改环境变量的方法

    原因是因为你安装的软件需要设置环境变量才能运行。接下来跟着小编一起学习Linux操作系统修改环境变量的方法。...方法一:/etc/profile文件添加变量【对所有用户生效(永久的)】   用VI文件/etc/profile文件增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。   ...要让刚才的修改马上生效,需要执行以下代码 复制代码 代码如下: # source /etc/profile 方法二:在用户目录下的.bash_profile文件增加变量【对单一用户生效(永久的)】...这个方法的原理就是再执行一次/etc/profile shell脚本,注意如果用sh /etc/profile是不行 的,因为sh是子shell进程执行的,即使PATH改变了也不会反应到当前环境,...以上本文给大家介绍Linux操作系统修改环境变量的方法,希望对大家有所帮助。

    4.1K00

    Ubuntu系统安装JDK 17并配置环境变量

    /usr/bin/javap (javap) update-alternatives: 使用 /usr/lib/jvm/java-17-openjdk-amd64/bin/jcmd 来自动模式中提供...可以Oracle网站上找到JDK下载链接。...配置环境变量: 打开/etc/environment文件: sudo nano /etc/environment 文件末尾添加以下行: JAVA_HOME="/usr/lib/jvm/java-17-...更新环境变量: source /etc/environment 检查环境变量是否正确配置: echo $JAVA_HOME echo $PATH 如果环境变量已正确配置,则会在终端上显示JAVA_HOME...以上步骤完成后,您就成功安装了JDK 17并配置了环境变量。 结语 如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏➕关注,您的支持是我坚持写作最大的动力。

    2.2K10

    做技术,如何使自己重复性业务持续提升?

    3 我看到的三类人 第一类人,是认为自己的技术阿里 P8 甚至 P9 级别,却只一个小公司写着简单的业务代码,时刻感觉自己被大材小用了,自认清高,不屑接受任何人的建议,也不屑与别人交流,但是,他们工作的进行中会尽可能的尝试简化重复性工作...● ● ● 第二类人,是比较常见的一类人,对工作的激情和积极性很低,更多的是按部就班的完成上级安排的任务,自身的提升完全依靠工作遇到的问题,很少去主动规划自身的能力体系,缺乏好奇心和刨根问底的心,这类人的工作态度为...在工作,遇到问题,首先去搜索引擎查阅资料,然后解决问题,问题解决完后,不要沉浸在喜悦和骄傲,应该去探究发生这个问题的根本原因,以及如何规避这个问题,这在以后再做这件事的时候会助你行云流水,每次都吸收一点新的知识...,或者是开发一些自己常用的插件,让自己的工作可以以更少的时间产出更多的产品,毕竟框架再多,也都是换汤不换药。...N 写在最后 本文从重复性工作为切入点,讲了很多在实际工作遇到的问题和解决方案,但是每个人的经历、所处的阶段、甚至是认知的不同,都会对每个点都自己独特的见解,但只要有着 “乐以忘忧,不知老之将至云尔”

    62050

    运维必备 | Win批处理(Batch)编程常用DOS命令汇总收藏备查

    】,若想永久生效要设置注册表项或者设置环境变量, Windows 10 及以上系统请按照以下步骤进行操作; 打开"控制面板":按下Win + X键,然后选择"控制面板"。...控制面板,选择"系统和安全",然后选择"系统"。 系统窗口中,选择"高级系统设置"。 弹出的"系统属性"窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。...REM 重置PATH环境变量,只会在 setlocal ~ endlocal 命令之间的代码块生效。...,恢复原装 endlocal @REM 验证环境变量是否被修改 echo Recovery PATH by Endlocal Set PATH 脚本解释: 从上例我们可以看到环境变量PATH第1...总结: 无论 Setlocal 命令之前它们的设置是什么,这些修改会一直保留到匹配的 Endlocal 命令。

    1.5K20

    2024最新Ubuntu系统配置JDK环境变量入门指南

    Ubuntu系统配置JDK环境变量入门指南 摘要 本文是为了帮助初学者Ubuntu系统成功配置JDK环境变量而编写。...您需要将这个文件解压到您的系统。推荐解压到/usr/lib/jvm目录下,这是Ubuntu系统通常放置JDK的地方。 打开终端,使用tar命令解压文件。...应用配置:为了让刚才的更改立即生效,还需要执行命令source /etc/profile,这样就重新加载了配置文件。...A: 命令前添加sudo,表示以超级用户身份执行命令,这通常可以解决权限问题。但请小心使用,因为错误的命令可能会损害系统。...总结 本文向初学者详细介绍了Ubuntu系统配置JDK环境变量的完整步骤,包括下载和安装JDK、使用vim编辑器设置环境变量以及验证安装的方法。

    91410

    批处理for命令的用法_批处理主要解决

    批处理程序中使用 for命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I. 2.2....usebackq – 指定新语法已在下类情况中使用:作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许 file-set中使用双引号扩起文件名称。...这就导致for之后的代码的变量设置了并没有立即生效。如果想要立即生效,需要启用变量延迟。...setlocal enabledelayedexpansion 启用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。...setlocal disabledelayedexpansion 禁用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。

    1.8K30

    移动U盘配置Java完整开发环境

    修改移动U盘的盘符 之后的配置需要使用到绝对路径,所以我们最好将盘符固定下来,由于使用的是U盘,那么干脆就命名为盘符U吧~ 「控制面板」的「磁盘管理」工具修改移动U盘的盘符设定。...博主的 JDK 放置 U:\Dev\JDK\jdk-21.0.1 目录下。值得说明的是,我们不需要再设置Java的环境变量,因为这是U盘,是可移动的,后面会说吗如何解决环境变量问题。...,看下面解释: setlocal和endlocal命令执行结果是让中间的程序对于系统变量的改变只程序内起作用,不会影响整个系统级别。...@echo off setlocal path=d:\ echo 局部环境变量path值 set path endlocal echo 系统环境变量path的值 set path 上例 setlocal... endlocal 后,重新显示一下系统变量 path ,会发现仍然是程序运行之前的 path 值,没有被程序改变。

    19610

    EasyCVRWindows系统修改录像存储路径不生效的原因是什么?

    更改方式:/mediaserver/tsingsee.ini文件,将out_path值改为绝对路径即可。有用户反馈,接入的设备全部开启了录像,并要求保存至少30天。...用户使用的是Windows服务器,修改路径后,发现并不生效,录像文件依然是保存在原路径下,于是请求我们协助排查。其实用户反馈的上述现象,是Windows系统机制导致。...并且需要注意的是,分别启动进程前,需要先修改/easycvr.ini配置文件[ms]-”start”参数,将其改为false。按照上述步骤修改后,即可完成录像存储路径的更改。...若有用户平台的使用过程遇到无法解决的问题,也可以联系我们进行协助。

    77420

    【黄啊码】C#,如何使应用程序线程更加安全?

    任何人都可以列出的事情要做或照顾使应用程序线程安全 。 如果可能的话,就C / C ++语言给出一个答案。 函数可以有多种线程安全的方法。 它可以是可重入的 。...如果你现在有全局variables,使它们成为每线程状态结构的成员,然后让线程将结构传递给通用函数。...现实生活,你的状态结构可能有20个字段,并且通过这些参数的大部分4-5个函数变得令人望而生畏。 你宁愿传递一个参数而不是许多。...一个想法是把你的程序想象成一堆线程队列换行。 每个线程都有一个队列,这些队列将与所有线程共享(以及一个共享的数据同步方法(如互斥等))。...en.wikipedia.org/wiki/Produc… 只要你保持你的线程本地化,只是通过队列中发送拷贝来共享数据,而不是像multithreading的(大多数)gui库和静态variables

    1.2K30
    领券