如果我有这个doit.bat
脚本:
@echo off
set MY_VAL=3
echo %MY_VAL%
然后:
> doit
3
> echo %MY_VAL%
3
换句话说,默认情况下,set
命令会将变量保留在调用环境中。这与Unix不同,在那里你需要source
一个脚本才能实现这一点。
我正在试图弄清楚如何能够做到以下几点:
.bat
脚本中设置变量,但在脚本完成后不再将它们保留到环境中 - 也就是说,让Windows更像Unix。 .bat
脚本运行时分叉的任何环境设置这些变量 - 也就是说,相当于通过Unix export
命令设置变量有没有办法通过其他cmd
命令或set
的某个选项执行此操作?我搜索SO和文档,但无法找到任何东西。
答案 0 :(得分:2)
==> SETLOCAL /?
Begins localization of environment changes in a batch file. Environment
changes made after SETLOCAL has been issued are local to the batch file.
ENDLOCAL must be issued to restore the previous settings. When the end
of a batch script is reached, an implied ENDLOCAL is executed for any
outstanding SETLOCAL commands issued by that batch script.
…
或阅读SETLOCAL: Set options to control the visibility of environment variables in a batch file。
您可以使用下一个doit.bat
脚本:
@echo off
SETLOCAL
set MY_VAL=3
echo %MY_VAL%