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

谷口昂*_*口昂平 37 windows environment-variables

有没有办法像ENVVAR=abc command在 Unix上一样在Windows上为单个命令设置环境变量?

setWindows 上由命令设置的变量似乎保留用于以下命令,但这不是我想要的。

Dav*_*ill 41

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

从当前cmd外壳:

您必须自己清除变量。

set ENVVAR=abc && dir & set ENVVAR=
Run Code Online (Sandbox Code Playgroud)

从批处理文件:

您可以使用setlocalendlocal

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal
Run Code Online (Sandbox Code Playgroud)

使用子cmd外壳:

您可以使用cmd /c来创建子外壳。

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

cmd /C "set ENVVAR=abc && dir"
Run Code Online (Sandbox Code Playgroud)

进一步阅读

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

  • 注意:这不会将 ENVVAR 设置为字符串“abc”,而是设置为“abc”!多余的空格可以简单地通过在“&&”之前将其删除来修复。您可能想要编辑您的答案,甚至可能明确指出这个问题,因为这对于 unix 仿射人来说可能会感到惊讶。调试起来非常困难,因为从 cmd.exe 窗口复制时不带任何参数的 `set` 输出不包含此类尾随空格! (2认同)

归档时间:

查看次数:

59647 次

最近记录:

9 年,8 月 前