Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Baal_30 en 23 Mayo 2015, 14:26 pm



Título: Comandos Batch en Java
Publicado por: Baal_30 en 23 Mayo 2015, 14:26 pm
Buenas, estaba mirando que igual que se puede crear un fichero .txt, también se puede crear un .bat desde java. La duda que me ha surgido, es si se pueden usar comandos Batch (o Bash) directamente en un programa en Java, por ejemplo, hacer un programa que cree números random y cuando salga el 10, con un if, hacer un Shutdown y que apague el ordenador, por ejemplo.

¿Se puede?

Un saludo.


Título: Re: Comandos Batch en Java
Publicado por: daryo en 23 Mayo 2015, 15:30 pm
si es posible
http://www.mkyong.com/java/how-to-execute-shell-command-from-java/


Título: Re: Comandos Batch en Java
Publicado por: Baal_30 en 23 Mayo 2015, 17:25 pm
uh, genial pues :P

Gracias ^^


Título: Re: Comandos Batch en Java
Publicado por: Coke951 en 2 Junio 2015, 23:08 pm
Existe alguna forma de limpiar la pantalla desde la terminal? osea introducir el comando cls para hacer un clear secreen y asi que el programa desde una terminal sea mas limpio?
He buscado por internet y lo unico que he encontrado es utilizar un ciclo for que imprima las suficientes lineas en blanco para que simule un cls, pero queda bastante feo.


Título: Re: Comandos Batch en Java
Publicado por: Baal_30 en 3 Junio 2015, 09:29 am
Creo que no, yo también he buscado bastante lo que preguntas y nunca he recibido respuesta diferente a la del for...


Título: Re: Comandos Batch en Java
Publicado por: 0xFer en 3 Junio 2015, 21:52 pm
Prueba con:

Código
  1. System.out.print("\033[2J\033[1;1H");

Realmente no te limpia la pantalla pero te puede servir


Título: Re: Comandos Batch en Java
Publicado por: Coke951 en 4 Junio 2015, 03:57 am
Lo utilice asi:
Código
  1. import java.util.Scanner;
  2.  
  3. class Prueba{
  4. public static void main(String []args){
  5.  
  6. Scanner entrada = new Scanner(System.in);
  7.  
  8. for(int x = 0; x < 10 ; x++){
  9. System.out.println("Mugre!");
  10. }
  11. System.out.println("deseas limpiar?");
  12. if(entrada.nextLine().equals("si")){
  13. System.out.print("\033[2J\033[1;1H");
  14. }
  15. }
  16. }
  17.  

Este es el resultado:
Código:
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
Mugre!
deseas limpiar?
si
←[2J←[1;1HPresione una tecla para continuar . . .

Funcional, funciona, pues no es haha, comoquiera gracias por intentar ayudar, si tienes alguna otra idea, porfavor dila, me seria bastante util con mis aplicaciones que son bastante largas con terminal.


Título: Re: Comandos Batch en Java
Publicado por: 0xFer en 4 Junio 2015, 04:19 am
Ah, tu terminal no soporta Códigos de escape ANSI, yo lo he probado en linux:

Código:
root@kali-F:~#









Si usas Windows debes habilitar ANSI.sys https://support.microsoft.com/en-us/kb/101875/es


Título: Re: Comandos Batch en Java
Publicado por: daryo en 4 Junio 2015, 04:32 am
pues...
Código
  1. public final static void clearConsole()
  2. {
  3.    try
  4.    {
  5.        final String os = System.getProperty("os.name");
  6.  
  7.        if (os.contains("Windows"))
  8.        {
  9.            Runtime.getRuntime().exec("cls");
  10.        }
  11.        else
  12.        {
  13.            Runtime.getRuntime().exec("clear");
  14.        }
  15.    }
  16.    catch (final Exception e)
  17.    {
  18.        //  Handle any exceptions.
  19.    }
  20. }


http://stackoverflow.com/questions/2979383/java-clear-the-console


Título: Re: Comandos Batch en Java
Publicado por: Coke951 en 4 Junio 2015, 06:20 am
Tampoco me funciona eso :/


(http://i.imgur.com/wCRaYQQ.png)


Título: Re: Comandos Batch en Java
Publicado por: 0xFer en 4 Junio 2015, 19:38 pm
Activa los Códigos de escape ANSI como ya te dije, eso tiene que funcionar.

lo que publicó daryo supongo que ha de funcionar también algo has de estar haciendo mal.


Título: Re: Comandos Batch en Java
Publicado por: Coke951 en 4 Junio 2015, 22:18 pm
Pues no se realmente que es lo que estoy haciendo mal con la solucion daryo que presento , si me podrías decir, te lo agradecería,