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

gma*_*man 6 windows command-line environment-variables

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

DEBUG=foo somecommand
Run Code Online (Sandbox Code Playgroud)

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

我可以在 Windows 命令处理器中执行类似的操作吗?

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

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

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

让我们在 bash 中运行它

$ export FOO=abc
$ node test.js FOO
FOO='abc'
Run Code Online (Sandbox Code Playgroud)

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

$ FOO=def node test.js FOO
FOO='def'
Run Code Online (Sandbox Code Playgroud)

检查 FOO 是否仍然是 abc

$ echo $FOO
abc
Run Code Online (Sandbox Code Playgroud)

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

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

cmd /S /C "set "FOO=def" & node test.js FOO"
Run Code Online (Sandbox Code Playgroud)

还有其他方法还是就是这样?

mek*_*ekb 3

只需使用set命令:

C:\>set foo=bar

C:\>echo %foo%
bar

C:\>exit
Run Code Online (Sandbox Code Playgroud)

再次打开cmd

C:\>echo %foo%
%foo%

C:\>
Run Code Online (Sandbox Code Playgroud)