variable modificar java_home entorno configurar java windows runtime.exec

modificar - Cómo ejecutar comandos de Windows con Java-Cambiar la configuración de red



variables de entorno java linux (5)

En Java, quiero poder ejecutar un comando de Windows.

El comando en cuestión es netsh . Esto me permitirá configurar / restablecer mi dirección IP.

Tenga en cuenta que no quiero ejecutar un archivo por lotes.

En lugar de usar un archivo por lotes, quiero ejecutar dichos comandos directamente. es posible?

Aquí está mi Solución implementada para referencia futura:

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


Puede ejecutar el comando con Runtime.getRuntime().exec("<command>") (por ejemplo, Runtime.getRuntime().exec("tree") ). Pero esto solo ejecutará ejecutables encontrados en path, no comandos como echo , del , ... Pero solo cosas como tree.com , netstat.com , ... Para ejecutar comandos regulares, tendrás que poner cmd /c antes el comando (por ejemplo, Runtime.getRuntime().exec("cmd /c echo echo") )


Use ProcessBuilder

ProcessBuilder pb=new ProcessBuilder(command); pb.redirectErrorStream(true); Process process=pb.start(); BufferedReader inStreamReader = new BufferedReader( new InputStreamReader(process.getInputStream())); while(inStreamReader.readLine() != null){ //do something with commandline output. }



Runtime.getRuntime().exec("netsh");

Ver Runtime Javadoc.

EDITAR: una respuesta posterior de leet sugiere que este proceso ahora está en desuso. Sin embargo, según el comentario de DJViking, este no parece ser el caso: documentación de Java 8 . El método no está en desuso.


public static void main(String[] args) { String command="netstat"; try { Process process = Runtime.getRuntime().exec(command); System.out.println("the output stream is "+process.getOutputStream()); BufferedReader reader=new BufferedReader( new InputStreamReader(process.getInputStream())); String s; while ((s = reader.readLine()) != null){ System.out.println("The inout stream is " + s); } } catch (IOException e) { e.printStackTrace(); } }

Esto funciona.