Ruby系统在Windows环境variables中调用

我需要设置一些环境variables,然后在windows机器上执行命令,然后在ruby脚本中调用它。 在Linux上,你可以做

cmd = 'echo $FOO' system({'FOO' => '123'}, cmd) OUTPUT is "123" 

但在Windows上这不起作用,输出是$ FOO

我怎样才能设置一个环境variables的Windowsruby系统调用。 我几个变种的ENV,并得到错误,或仍然无法正常工作。

 system({$ENV[:VAR1] => "WIN7"}, 'echo $ENV[:VAR1]') 

Ruby的system()调用主机的默认shell,所以你需要说出shell的语言

Windows上的默认shell是cmd.exe ,其中环境变量FOO必须被引用为%FOO%才能被扩展。

因此,你的代码应该是:

 cmd = 'echo %FOO%' system({'FOO' => '123'}, cmd)