Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Java, eseguire comandi DOS

    Salve a tutti, ho un problemino da risolvere, devo creare un metodo in Java che esegue un programma esterno da shell di comando, con il metodo Runtime.getRuntime().exec();

    Vi mostro un pò di codice per farmi capire meglio:

    codice:
    String [] command = new String[2];
    	    	command[0] = "c:\\cwb-nc\\bin\\cwb-nc.bat";
    	    	command[1] = "ccs";
    	    	
    	    	Process proc = Runtime.getRuntime().exec(command);
    	    	PrintWriter concurrency=new PrintWriter(new  
    	    		     OutputStreamWriter(proc.getOutputStream()));
    	    	BufferedReader rova = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    Utilizzando il buffered reader 'rova' ottengo l'output del programma.
    Il mio scopo è quello di far eseguire a questo programma più istruzioni, vorrei farlo utilizzando il PrintWriter 'concurrency' con il metodo: concurrency.println("comando1"); concurrency.println("comando2");
    Il problema è che riesco a leggere ciò che il programma stampa col bufferedreader, ma non riesco a passargli comandi in ingresso col PrintWriter (eseguendo concurrency.println("comando1"); questo sembra non avere effetto).

    Sbaglio forse io nel fare qualcosa? Vi faccio notare che non posso passare questi comandi in ingresso utilizzando l'array 'command', in quanto il programma accetta come parametro solo "ccs"..

    Grazie mille!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Java ha un forum dedicato... sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: Java, eseguire comandi DOS

    Originariamente inviato da gighen85
    Salve a tutti, ho un problemino da risolvere, devo creare un metodo in Java che esegue un programma esterno da shell di comando, con il metodo Runtime.getRuntime().exec();

    Vi mostro un pò di codice per farmi capire meglio:

    codice:
    String [] command = new String[2];
    	    	command[0] = "c:\\cwb-nc\\bin\\cwb-nc.bat";
    	    	command[1] = "ccs";
    	    	
    	    	Process proc = Runtime.getRuntime().exec(command);
    	    	PrintWriter concurrency=new PrintWriter(new  
    	    		     OutputStreamWriter(proc.getOutputStream()));
    	    	BufferedReader rova = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    Utilizzando il buffered reader 'rova' ottengo l'output del programma.
    Il mio scopo è quello di far eseguire a questo programma più istruzioni, vorrei farlo utilizzando il PrintWriter 'concurrency' con il metodo: concurrency.println("comando1"); concurrency.println("comando2");
    Il problema è che riesco a leggere ciò che il programma stampa col bufferedreader, ma non riesco a passargli comandi in ingresso col PrintWriter (eseguendo concurrency.println("comando1"); questo sembra non avere effetto).

    Sbaglio forse io nel fare qualcosa? Vi faccio notare che non posso passare questi comandi in ingresso utilizzando l'array 'command', in quanto il programma accetta come parametro solo "ccs"..

    Grazie mille!
    io non ho capito niente, provi a spiegarti meglio?
    RTFM Read That F*** Manual!!!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Il PrintWriter costruito in quel modo non fa l'auto-flush... quindi, ogni volta che scrivi un comando, dovrai accertarti che esso termini con il carattere di newLine e, in più, effettuare manualmente il flush().

    C'è una discussione che tratta il medesimo problema (associato ad una Socket) appena sotto questa discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Originariamente inviato da LeleFT
    Il PrintWriter costruito in quel modo non fa l'auto-flush... quindi, ogni volta che scrivi un comando, dovrai accertarti che esso termini con il carattere di newLine e, in più, effettuare manualmente il flush().

    C'è una discussione che tratta il medesimo problema (associato ad una Socket) appena sotto questa discussione.


    Ciao.
    grazie mille, problema risolto, A+

    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.