如何通过批处理文件限制本地更改环境变量

如何通过批处理文件限制本地更改环境变量
  • 我有两个批处理文件 x.bat 和 y.bat。
  • 我正在从 x.bat 调用 y.bat。
  • 文件 y.bat 设置环境变量,如:set ABC=
  • 限制是我无法更改这个 Y.bat 文件,但我希望将我的变量“ABC”设置为其他内容。
  • 如何在 X.bat 中设置“ABC”以使其不被 y.bat 文件设置命令覆盖。

答案1

您无法避免y.bat更改变量中的值。环境变量不能定义为常量,也不能标记为只读或写保护。如果调用的批处理文件更改了变量,而您无法更改批处理文件,则您无法避免更改。

你唯一能避免的是变量变化的传播影响x.bat

脚本

@echo off

    set "abc=set from x.bat"

    setlocal
    call y.bat
    endlocal

    echo %abc%

y.bat

@echo off
    set "abc=changed value"

setlocal生成环境空间的副本并将此副本设置为活动副本。所有更改都在此副本中完成,直到下一个endlocal副本丢弃该副本并恢复先前的环境。

答案2

在批处理文件中,将 ABC 设置为另一个变量。您可以按如下方式执行此操作:

set DEF=%ABC%

一个例子:

set ABC=testing
set DEF=%ABC%
set ABC=changed

echo %ABC%
:: prints: changed

echo %DEF%
:: prints: testing

相关内容