如何像 bash 一样设置临时环境变量 Windows 命令提示符?

如何像 bash 一样设置临时环境变量 Windows 命令提示符?

在 Bash 中我可以创建暂时的命令行上的环境变量。例如

DEBUG=foo somecommand

这设置了环境变量DEBUG,但仅适用于somecommand。当行完成后,DEBUG不再设置。

我可以在 Windows 命令处理器中做类似的事情吗?

注意:使用SET不起作用。这会设置当前命令处理器环境,而不仅仅是即将执行的命令。

再举一个例子,这里有一个小的 node.js 程序,它打印单个环境变量的值

// test.js
console.log(`${process.argv[2]}='${process.env[process.argv[2]]}'`);

让我们在 bash 中运行它

$ export FOO=abc
$ node test.js FOO
FOO='abc'

然后让我们用临时设置来运行它

$ FOO=def node test.js FOO
FOO='def'

检查 FOO 是否仍为 abc

$ echo $FOO
abc

如何在 Windows 命令提示符中完成同样的事情?

一种方法似乎是重新启动命令处理器,如下所示

cmd /S /C "set "FOO=def" & node test.js FOO"

还有其他方法吗或者就是这样?

答案1

只需使用以下set命令:

C:\>set foo=bar

C:\>echo %foo%
bar

C:\>exit

再次打开cmd

C:\>echo %foo%
%foo%

C:\>

答案2

这可以在脚本中完成,SETLOCAL并且ENDLOCAL

例子:

SETLOCAL
set FOO=abc
node test.js FOO
ENDLOCAL

如果您没有运行脚本,那么您就不需要变量,您只需:

node test.js abc

如果您以编程方式生成命令,请生成脚本并运行,然后将其删除。我知道,这并不理想。

相关内容