我正在编写一个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 \
有人请在这方面指导我。答案 0 :(得分:2)
好吧,因为没有任何东西负责转换%PATH%
它只是没有被转换!
更严重的是,cmd.exe
解释器实际上是对环境变量进行翻译而你并没有使用它。要让它发挥作用,你必须:
将环境变量PATH
转换为其在java代码中的值
String path = System.getenv("PATH");
在命令中使用转换后的字符串
Process p = rt.exec("setx PATH \"" + path + ";" + folderPath + "\"");
编辑:
要确定发生了什么,您可以在执行之前显示生成的命令:
String cmd = "setx PATH \"" + path + ";" + folderPath + "\"";
Process p = rt.exec(cmd);