"\" no se puede usar en Java así como así, porque lo interpreta como el comando "escape"
Debe usarse "\\"
Gracias por la respuesta, pero colocando "\\" no he obtenido la solución.
Me explico mejor, tengo 3 sentencias:
"cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+
"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+
"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";
Cada una por separado funciona correctamente, pero cuando las corro a la vez, me genera un error.
Cordial saludo, he creado un método en el cual, al presionar un botón debe configurar tres elementos en la tarjeta de red desde el CMD:
Configuración tarjeta de red con ip fijas
DNS primario
DNS secundario
Son tres sentencias, si las ejecuto cada una por separado me funcionan correctamente, necesito ejecutar las tres, una tras otra, lo que hice fue colocar un salto de lìnea \n después de cada sentencia para representar un enter, pero me genera un error desde el sìmbolo del sistema (cmd),
"cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+
"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+
"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";
yo probé con el comando en cmd y funciona bien, se realiza la configuración de las sentencias una tras otra
netsh interface ip set address name="Conexión de área local" static 192.168.0.56 255.255.255.0 192.168.0.1 1
netsh interface ip set dns "Conexión de área local" static 200.21.200.10
netsh interface ip add dns name="Conexión de área local" 200.21.200.80
Cual puede ser el error y cómo puedo corregirlo?
Mi botòn con el mètodo se muestra a continuación:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String s = null;
int octeto=0;
octeto = (int) (Math.random() *(30-15) + 15);
try {
//Se determina el sistema operativo.
String so = System.getProperty("os.name");
String comando;
// Si el sistema operativo es Linux se ejecuta el comando "ifconfig"
if (so.equals("Linux"))
comando = "ifconfig";
else
comando = "cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+
"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+
"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";
Process p = Runtime.getRuntime().exec(comando);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
System.out.println("Errores a continuación:\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();
}
//Se abre el mensaje de dialogo que indica al usuario que se realizó la limpieza de la caché de DNS.
JOptionPane.showMessageDialog(null,"EL adaptador es" +AdaptadorRed.getText()+ octeto,"Diagnóstico Final", JOptionPane.INFORMATION_MESSAGE);
}
Gracias por su atención y colaboración.