2

我正在编写一个 java 代码,它将使用 java 将路径字符串附加到 %PATH% 变量

在命令提示符下,命令是

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

在java中,这是我的代码:

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();
    }

}

问题是我的命令行提示符完美地附加了新字符串。但是 java 代码将路径变量的值设为 %PATH%;C:\my Path\

有人请在这方面指导我。

4

1 回答 1

2

好吧,因为没有人负责转换%PATH%它根本没有转换!

更严重的是cmd.exe,实际翻译环境变量的是解释器,而您不使用它。要让它工作,你必须:

  1. 将环境变量转换为PATHjava代码中的值

    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 回答