- 我有两个批处理文件 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