Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows中使用节点更改控制台搜索路径_Windows_Node.js_Batch File - Fatal编程技术网

在Windows中使用节点更改控制台搜索路径

在Windows中使用节点更改控制台搜索路径,windows,node.js,batch-file,Windows,Node.js,Batch File,我希望那里的节点专家能为我指明正确的方向。我正在尝试使用节点脚本更改Windows Win7中的path环境变量。原因很复杂,但基本上,我需要计算一组路径,然后为当前控制台设置。我不想更改全局变量,只想更改用于当前控制台窗口的局部变量。这类似于运行: Set Path = <SOME PATHS> 或 我还尝试通过管道将所需路径发送到批处理文件,然后设置路径,但我得到以下错误: events.js:72 throw er; // Unhandled 'error' even

我希望那里的节点专家能为我指明正确的方向。我正在尝试使用节点脚本更改Windows Win7中的path环境变量。原因很复杂,但基本上,我需要计算一组路径,然后为当前控制台设置。我不想更改全局变量,只想更改用于当前控制台窗口的局部变量。这类似于运行:

Set Path = <SOME PATHS>

我还尝试通过管道将所需路径发送到批处理文件,然后设置路径,但我得到以下错误:

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

我认为这可能与脚本计时有关,但无法将管道节点脚本输出到批处理文件。我想这应该行得通,但我可能做错了什么。然而,如果可能的话,我宁愿在node中找到一种方法来完成整个操作,因为pipe方法有点粗糙。

事实上,我已经从这个答案中找到了解决这个问题的方法。我成功地实现了以下功能:for/f delims=%%a在'node myPathSettingScript.js'do@set PATH=%%a中。但是,如果整个操作可以在节点中完成,那就太好了。每次创建流程时,环境块都会按原样从父级复制到子级,或者可以自定义环境块,并且子级中的更改不会反映到父级中。每个进程都有自己的环境变量副本。环境块中的任何更改仅在进行更改的流程中以及在进行更改后从其开始的流程中可见。如果更改必须影响控制台及其启动的进程,则必须在控制台级别进行更改。节点是一个单独的进程,具有自己的环境副本。您需要批处理文件,或者,您可以在节点中进行更改,并从节点开始任何操作。这样所有启动的进程都将继承这个环境。@MC-ND是的,我希望这就是答案。正常的安全性可能会阻止将环境更改传递回父进程。然而,我希望有办法解决这个问题。批量解决方案似乎是最好的
process.stdout.write(newPaths.join(';'));
Set Path = %1