NodeJSのPATH環境変数に値を追加する方法は?


8

質問で提案された回答に従って-

環境変数を永続的に設定することは可能ですか?

コマンドで新しい環境変数を永続的に設定することができました-

spawnSync('setx', ['-m', 'MyDownloads', 'H:\\temp\\downloads'])

しかし、私の目標は、PATH環境変数に新しい値を追加することです。

出来ますか?


これは、NodeやJavaScript、Electronではなく、WindowsとSetxコマンドに関する質問のようです。
アベジダー

あなたが正しいです!病気それを修正
ラパス

私の答えを使用しようとしていますか?
hong4rc

私はあなたの答えを理解できませんでした。私の場合、管理者権限は問題ではありません。
パス

回答:


1

なぜ環境変数を取得してから追加しないのですか?

すなわち

const {spawnSync} = require("child_process");
const current_value = process.env.PATH;
const new_path_value = current_value.concat(";", "/some/new/path");

var result = spawnSync('setx', ['-m', 'PATH', new_path_value])

// STDOUT
var stdOut = result.stdout.toString();
console.log(stdOut)

// STDERR
var stdErr =  result.stderr.toString();

if(stdErr === '') {
    console.log('Successfully set environment variable')
} else {
    console.log(`ERROR: ${stderr}`)
}

"/ some / new / path"を更新し、これを管理者として実行すると、提供したリンクが示唆しているように動作するはずです。


うまくいかなかった
Paz

現在の環境変数をprocess.envから取得できますか?console.log(current_value)とconsole.log(new_value)を実行するとどうなりますか?
marky_91

それは私の悪かった、あなたの解決策は正しかった!ありがとうございました
Paz

2

スクリプトを管理者権限で実行します。

  • 管理者でcmdまたはPowerShellを開きます
  • 走る node your_script.js
  • アペンドにPATH変数、設定可能な値は次のとおりです。%PATH%;your_new_value here%PATH%古い値を取得します)

electronアプリで実行する場合は、管理者権限が必要です。

setxウィンドウで実行することを忘れないでください

ここに画像の説明を入力してください


古い値への追加と新しい値の設定の違いは何ですか?
Paz

@Paz追加%PATH%して古い値を取得し、新しい値を追加できます
hong4rc

ああ、わかってるよ。それは私がエレクトロンでやった最初のことでした。Windowsのコマンドはsetx -m '%path%; NEW_VALUE'ですが、Electronでは機能しません
Paz

@Paz管理者権限で実行しますか?
hong4rc

もちろん。管理者権限は「-m」に対してのみ必要です。つまり、変数はシステム変数であり、ユーザー変数ではありません。それは簡単な部分です。新しい値を追加するのではなく、常に古い値を上書きする新しい値を設定することになります。
パス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.