Comment Exécuter des Commandes de Windows à l'Aide de Java - Modification des Paramètres du Réseau
En Java, je veux être en mesure d'exécuter une commande de Windows.
La commande en question est netsh
. Cela va me permettre de régler/réinitialiser mon adresse IP.
Noter que je ne veux pas exécuter un fichier de commandes.
Au lieu d'utiliser un fichier de commandes, je veux exécuter des commandes directement. Est-ce possible?
Voici ma Solution mise en œuvre pour Référence Future:
public class JavaRunCommand {
private static final String CMD =
"netsh int ip set address name = \"Local Area Connection\" source = static addr = 192.168.222.3 mask = 255.255.255.0";
public static void main(String args[]) {
try {
//Run "netsh" Windows command
Process process = Runtime.getRuntime().exec(CMD);
//Get input streams
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
//Read command standard output
String s;
System.out.println("Standard output: ");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
//Read command errors
System.out.println("Standard error: ");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
- Ce qui a été répondu à de nombreuses reprises. Il suffit de regarder stackoverflow suggestions pour trouver certains d'entre eux
- Toutes mes excuses. Pourriez-vous peut-être me lier à certaines de ces questions?
- Il suffit de regarder dans la barre latérale.
- Balle, facepalm...Merci.
- soupir stackoverflow.com/questions/tagged/processbuilder
- codepuran.com/java/execute-dos-command-java
Vous devez vous connecter pour publier un commentaire.
Voir Runtime Javadoc.
EDIT: UNE réponse plus tard par leet suggère que ce processus est maintenant obsolète. Cependant, comme par le commentaire par DJViking, cela ne semble pas être le cas: Java 8 documentation. La méthode n'est pas obsolète.
Runtime.getRuntime().exec("cmd /c netsh");
Utilisation
ProcessBuilder
Runtime.getRuntime().exec()
n'est pas obsolète.Vous pouvez exécuter la commande avec
Runtime.getRuntime().exec("<command>")
(eg.Runtime.getRuntime().exec("tree")
). Mais, cela ne fera qu'exécuter les fichiers exécutables trouvé en chemin, pas de commandes commeecho
,del
, ... Mais seulement des trucs commetree.com
,netstat.com
, ... courir régulièrement des commandes, vous aurez à mettrecmd /c
avant la commande (par exempleRuntime.getRuntime().exec("cmd /c echo echo")
)Runtime#exec()
.Cela fonctionne.
String s; while ((s = reader.readLine() != null) { System.out.println(s); }
while ((s = reader.readLine()) != null){
est correct.