批处理脚本使setlocal变量被其他批处理文件访问

2024-01-01

我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量。该批处理文件将被许多其他批处理文件使用(调用)来获取变量。在编写批处理文件时,我遇到了变量扩展的问题,所以我使用了SETLOCAL ENABLEDELAYEDEXPANSION来克服这个问题。但是这样做,使用它的其他批处理文件无法获取变量集。

下面是批处理脚本,

getVariables.bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if EXIST "test.dat" (
    for /F "tokens=*" %%I in (test.dat) do set %%I
    echo setting JAVA_HOME to :: !JAVA_HOME!
    echo setting JAVA to !JAVA!
)

在我的另一个批处理文件中,我使用上面的批处理文件来获取变量集

   another.bat
 
   call getVariables.dat
   echo "%JAVA%"

但 echo 正在打印“”,但未设置它。如果这是因为setlocal,我该如何克服这个问题?我也需要setlocal用于延迟扩展并在执行时发生。我该如何解决这个问题?


要将多个全局变量设置为局部变量的值,请使用以下技巧:

endlocal & (
  set "globalvar1=%localvar1%"
  set "globalvar2=%localvar2%"
  set "globalvar3=%localvar3%"
)

( ) 块中的变量在执行 endlocal 之前展开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批处理脚本使setlocal变量被其他批处理文件访问 的相关文章

随机推荐

  • 在 PHP 中压缩文件夹的内容

    在将这篇文章标记为重复之前 请注意 我已经在 SO 上搜索过答案 并且到目前为止我发现的一次答案 如下所列 并不完全是我一直在寻找的答案 如何在 PHP 中 递归地 压缩目录 https stackoverflow com question
  • JavaFX 中的背景图像

    我正在尝试获取要在 javaFX 场景中加载的背景图像 我在这里找到的答案不起作用 窗口打开 但它是空白的 没有图像 public class FirstFX extends Application public static void m
  • 如何在 Elixir 中操作正则表达式替换字符串

    我发现自己想在 Elixir 中这样做 re sentence frag r w s s Regex replace re sentence frag oh a DOG woOf String capitalize 1 当然 这没有任何影响
  • 使用docker时如何避免“端口冲突”?

    我希望标题足够具有描述性 我正在尝试在 docker 中执行我的节点应用程序 使用 mongo 和 mysql 我在用docker compose启动应用程序并docker compose yml文件如下 version 3 3 servi
  • 如何使用 Vowpal Wabbit 的上下文强盗学习排名?

    我正在使用 Vowpal Wabbit 的上下文强盗来对给定上下文的各种操作进行排名 Train Data 1 10 0 1 123 2 9 0 1 123 3 8 0 1 123 4 7 0 1 123 5 6 0 1 123 6 5 0
  • Android FCM 通知无法进入某些 Android 设备

    当我为 Android 应用程序实现 FCM 通知时 我在某些 Android 设备 如 Mi Oppo 一加二等 中没有收到通知 Mi 获得刷新令牌但没有收到通知 Oppo 或一加二没有收到刷新令牌和通知 我该如何解决这个问题 谢谢 检查
  • Google Firebase 通知适用于控制台,但不适用于 API

    从 firebase 控制台发送时通知工作正常 但从 API 发送时则不起作用 即使结果显示成功 multicast id 5946406103096345260 成功 1 失败 0 canonical ids 0 结果 message i
  • 为什么我不应该在这个简单的函数中使用“const”?

    在学习 C 时 学习函数概念时获得的第一个函数之一是 int add int a int b return a b 现在我想知道 我应该使用const 关键字在这里 或者更确切地说不是 导致 int add const int a cons
  • Google:禁用 robots.txt 中的某些查询字符串

    http www site com shop maxi dress colourId 94 optId 694 http www site com shop maxi dress colourId 94 optId 694 product
  • Python-多处理错误“无法启动进程两次”

    我尝试使用开发一种算法multiprocessingPython 中的包 我从互联网上学习了一些教程 并尝试用这个包开发一个算法 环顾四周并尝试使用我的 hello world 后Process Queue and Pool 我尝试在此代码
  • 茉莉花模拟ajax与JSON

    我尝试模拟 存根我的 ajax 调用 但看起来它只适用于文本 当我尝试使用对象设置响应时 不会调用我的完成回调 jasmine Ajax stubRequest some url 1 andReturn responseText respo
  • 具有自定义边框颜色的 UIButton,iPhone

    我想创建矩形的自定义 UIButton 为此 我使用矩形视图作为 UIButton 的背景 并将 UIbuttons 背景颜色设置为clearcolor 但 UIbutton 的边框仍然保留 关于如何使边框消失有什么建议吗 感谢您提前提供任
  • 如何通过TcpClient获取页面?

    我正在尝试通过 TCP 流向页面发送 GET 请求 我的代码如下所示 public class SocketLevelWebClient public string SendWebRequest string url string requ
  • 推送通知不起作用

    我是安卓新手 我已经尝试过文档中给出的示例 但我没有收到任何推送通知 只有收到通知图标 但没有内容和标题 谁能帮我清关吗 推送通知在模拟器中是否有效 在此示例中 我找到了一个名为 Resultactivity 的类 使用此的目的班级 我给出
  • 通过 as.character() 将列表强制为字符时为什么会出现这种行为?

    在 大部分 回答的过程中this https stackoverflow com q 7591295 324364问题 我偶然发现了一些我觉得我之前应该已经看过的东西 假设您有一个列表 l lt list a 1 3 b letters 1
  • 从未引用的程序集加载时,Application.LoadComponent 失败

    我有一个 WPF 应用程序 需要能够加载预定义的UserControl基于 Uri 我在用着Application LoadComponent Uri 来做到这一点 但它现在正在抛出一个IOException with Cannot loc
  • Fabric.js 逐像素操作 Image 对象来改变颜色

    我想获取 Fabric Image 对象的图像数据 以循环遍历每个像素 并在给定颜色为另一种给定颜色时更改其颜色 但是我不想获取整个画布的数据 仅针对该特定对象 像这样的东西 changeColor object targetColor r
  • 如何在openpyxl图表中显示日期格式

    我有一个Excel文件 Excel 内容 我使用openpyxl绘制图表 但显示的日期格式不正确 Chart my code from openpyxl import load workbook from openpyxl import W
  • 如何操作Webkit窗口内的页面内容(使用QT和QTWebKit)?

    请帮助我理解 如何操作 qt webkit 窗口中显示的 html 内容 我需要简单的操作 例如填写输入字段和单击按钮 有这方面的建议 文章吗 请查看下面的示例 它用QWebView http chaos troll no tavestbo
  • 批处理脚本使setlocal变量被其他批处理文件访问

    我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量 该批处理文件将被许多其他批处理文件使用 调用 来获取变量 在编写批处理文件时 我遇到了变量扩展的问题 所以我使用了SETLOCAL ENABLEDELAYEDEXPANSION