使用java运行setx命令

时间:2014-08-08 11:17:27

标签: java path setx

我正在编写一个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 \

有人请在这方面指导我。

1 个答案:

答案 0 :(得分:2)

好吧,因为没有任何东西负责转换%PATH%它只是没有被转换!

更严重的是,cmd.exe解释器实际上是对环境变量进行翻译而你并没有使用它。要让它发挥作用,你必须:

  1. 将环境变量PATH转换为其在java代码中的值

    String path = System.getenv("PATH");
    
  2. 在命令中使用转换后的字符串

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

    要确定发生了什么,您可以在执行之前显示生成的命令:

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