在 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
如果您以编程方式生成命令,请生成脚本并运行,然后将其删除。我知道,这并不理想。