Utilisez-vous ProcessBuilder pour cela? Cela permet un accès simple aux variables d'environnement passées aux sous-processus. Il semble que vous essayez de modifier l'environnement global, ce qui n'est probablement pas ce que vous voulez faire.
Voici un exemple:
ProcessBuilder pb = new ProcessBuilder();
Map<String, String> env = pb.environment();
System.out.println("Current environment: " + env.toString());
String path = env.get("PATH");
path = path.substring(0, path.indexOf("d:\\test")) + path.substring(path.indexOf("d:\\test") + "d:\\test".length());
env.put("PATH", path);
pb.command("ping");
Process p = pb.start();
// ...
Parce qu'il semble que vous êtes sous Windows, vous aurez besoin d'être un peu plus prudent de trouver la variable de chemin dans l'environnement, étant donné que l'environnement Windows est Case- insensible, mais Map.get()
est sensible à la casse. Probablement préférable de faire une boucle à travers les touches à la recherche d'un equalsIgnoreCase("PATH")
.
En outre, vous voudrez peut-être nettoyer le chemin avant de le remettre dans la carte (assurez-vous qu'il ne contient pas System.getProperty("path.separator")
supplémentaires s.
Quelle est la commande que vous utilisez à l'étape 2? –
commande comme ipconfig, ping –
@ user482914 - où est java ici? Montrer votre code serait utile. –