我希望那里的节点专家可以指出我正确的方向。我试图使用节点脚本来更改Windows(Win7)中的路径环境变量。原因很复杂,但基本上,我需要计算一组路径,然后为当前控制台设置它。我不打算更改全局变量,只是用于当前控制台窗口的本地变量。这与运行类似:
Set Path = <SOME PATHS>
但是,更改节点脚本中的路径似乎只影响正在运行的脚本(而不是调用控制台)。我尝试使用 child_process 运行 Set Path = ,还尝试更直接的方法来更改 process.env.PATH 即可。这些都没有贯穿于调用过程。
因此以下两种情况都不会产生预期的效果:
process.env.PATH = newPaths.join(';');
或
var exec = require('child_process').exec;
exec('PATH='+ newPaths.join(';'), function(error, stdout, stderr){
...
});
我也尝试通过管理批处理文件(然后设置路径)所需的路径来破解它,但是我收到以下错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:901:11)
at Object.afterWrite (net.js:718:19)
为了达到这个目的,我用
结束了我的剧本process.stdout.write(newPaths.join(';'));
并尝试将其传输到具有以下内容的批处理文件:
Set Path = %1
我认为这可能与脚本计时有关,但无法将管道节点脚本输出到批处理文件。我认为这应该有用,但我可能做错了。但是,如果可能的话,我宁愿在节点中找到一种方法来完成整个操作,因为管道方法有点笨拙。