如何在Windows上为单个命令设置环境变量? [重复]


Answers:


17

有没有办法为单个命令设置环境变量?

从目前来看 cmd 贝壳:

你必须自己清除变量。

set ENVVAR=abc && dir & set ENVVAR=

从批处理文件:

您可以使用 setlocalendlocal

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal

使用孩子 cmd 贝壳:

您可以使用 cmd /c 创建一个子shell。

该变量在子shell中设置,不会影响父shell(如注释中所指出的那样) jpmc26 )。

cmd /C "set ENVVAR=abc && dir"

进一步阅读

  • Windows CMD命令行的A-Z索引 - 与Windows cmd相关的所有内容的出色参考。
  • CMD - 启动新的CMD shell并(可选)运行命令/可执行程序。
  • ENDLOCAL - 批量文件中环境变化的最终本地化。将变量从一个批处理文件传递到另一个。
  • 重定向 - 重定向运算符。
  • - 显示,设置或删除CMD环境变量。使用SET进行的更改将仅在当前CMD会话期间保留。
  • SETLOCAL - 设置选项以控制批处理文件中环境变量的可见性。

另一个选择是启动一个单独的 cmd 处理并将它们设置在那里。例如。, cmd /C "set ENVVAR=abc && dir"。由于它不会影响父进程,因此在退出时它将被有效“清除”。
jpmc26

@ jpmc26好一个。谢谢。添加回答。
DavidPostill

如果命令失败,第一种方法不会清除变量。
Andrew Medico

@AndrewMedico谢谢。好点子。答案已修复。
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.