2

I am writing a java code that will append a path string to the %PATH% variable using java

In command prompt the command is

setx PATH "%PATH%;C:\my Path\"

In java here is my code:

import java.io.File;
import java.io.IOException;

public class AddToPATHVariable {
    public static void main(String[] args) throws InterruptedException, IOException {
        String folderPath = "C:\\my Path\\";
        System.out.println(folderPath);
        Runtime rt = Runtime.getRuntime() ;
        Process p = rt.exec("setx PATH \"%PATH%;" + folderPath + "\"");
        p.waitFor();
        p.destroy();
    }

}

The issue is that my command line prompt is append the new string perfectly. But java code is make the value to path variable to be %PATH%;C:\my Path\

誰かがこの点で私を案内してください。

4

1 に答える 1

2

まあ、変換を担当するものは何もない%PATH%ので、単に変換されません!

もっと深刻なことに、cmd.exe実際に環境変数の変換を行うのはインタープリターであり、あなたはそれを使用しません。それを機能させるには、次のことを行う必要があります。

  1. PATH環境変数をJavaコードの値に変換します

    String path = System.getenv("PATH");
    
  2. コマンドで変換された文字列を使用する

    Process p = rt.exec("setx PATH \"" + path + ";" + folderPath + "\"");
    

編集 :

何が起こるかを本当に確認するために、生成されたコマンドを実行する前に表示できます。

String cmd = "setx PATH \"" + path + ";" + folderPath + "\"";
Process p = rt.exec(cmd);
于 2014-08-08T16:06:36.583 に答える