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

    Classe ProcessBuider e file.bat da eseguire

    Salve devo far eseguire un programma fuori dalla mia applicazione ed uso per questo la classe ProcessBuilder passandogli come argomento un file.bat che contiene le istruzioni da eseguire, ora se queste istruzioni devo in parte modificarle per una nuova esecuzione come devo fare? andare a modificare il file.bat in qualke modo oppure si possono passare dei parametri al costruttore della classe ProcessBuider.

    codice:
      try {
                FileWriter writer = new FileWriter("C:\\nuovo.bat");
                PrintWriter pw = new PrintWriter(writer);
                pw.println("cmd /C ver");
                ProcessBuilder pb = new ProcessBuilder("C:\\nuovo.bat");
                pb.redirectErrorStream(true);
                Process p = pb.start();
                InputStream i = p.getInputStream();
                InputStreamReader isr = new InputStreamReader(i);
                BufferedReader br = new BufferedReader(isr);
                String stampa = null;
                while((stampa = br.readLine())!=null )
                    System.out.println(stampa);
               }
            catch(Exception e){ }
    }
    Il file nuovo.bat viene creato ma non ci posso accedere probabilmente non ci scrive niente dentro, c'è un altro modo per creare ed scrivere in un file.bat
    Oppure i comandi che devono andare nel nuovo.bat li posso passare attraverso un Costruttore della classe ProcessBuider

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    PS: quando posti del codice, usa i tag CODE.

    Il nuovo file che crei devi prima di tutto chiuderlo dopo averlo creato, altrimenti rimarrà bloccato dall'applicazione.

    Non conosco la classe ProcessBuilder (non l'ho mai usata), ma non credo possano esistere dei "parametri" da passare per fare ciò che chiedi. E se dovessi eseguire un .exe?


    codice:
       try {
          FileWriter writer = new FileWriter("C:\\nuovo.bat");
          PrintWriter pw = new PrintWriter(writer);
          pw.println("cmd /C ver");
          pw.flush();
          pw.close();
          ProcessBuilder pb = new ProcessBuilder("C:\\nuovo.bat");
          pb.redirectErrorStream(true);
          Process p = pb.start();
          InputStream i = p.getInputStream();
          InputStreamReader isr = new InputStreamReader(i);
          BufferedReader br = new BufferedReader(isr);
          String stampa = null;
          while((stampa = br.readLine())!=null )
             System.out.println(stampa);
       } catch(Exception e){ e.printStackTrace(); }
    }
    PPS: pessima idea quella di uccidere le eccezioni...

    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
    Ciao grazie per la risposta..
    In realtà nel file.bat c'è il percorso di un file.exe che devo eseguire dal promt di Ms-DOS, con ulteriori parametri cioè

    C:\file.exe C:\fileinput C:\fileoutput

    ora il path e i relativi fileinput e output devo poterli cambiare quindi dovrei andare a riscrivere ogni volta nel file nuovo.bat i nuovi path la "soluzione che ho pensato" è buona o meno?

    Utilizzo un file bat inquanto oltre a tutte le info sul file da eseguire e i due path devo anche riindirizzare lo standard output e standar error generato dal programma che vado ad inserire in un altro file

    C:\file.exe C:\fileinput C:\fileoutpit 2>file

    Mi dai un aiuto.

  4. #4
    Originariamente inviato da fuoricorso
    Ciao grazie per la risposta..
    In realtà nel file.bat c'è il percorso di un file.exe che devo eseguire dal promt di Ms-DOS, con ulteriori parametri cioè

    C:\file.exe C:\fileinput C:\fileoutput

    ora il path e i relativi fileinput e output devo poterli cambiare quindi dovrei andare a riscrivere ogni volta nel file nuovo.bat i nuovi path la "soluzione che ho pensato" è buona o meno?

    Utilizzo un file bat inquanto oltre a tutte le info sul file da eseguire e i due path devo anche riindirizzare lo standard output e standar error generato dal programma che vado ad inserire in un altro file

    C:\file.exe C:\fileinput C:\fileoutpit 2>file

    Mi dai un aiuto.
    P.S avevi ragione sul fatto di chiudere pw.close()
    ora funziona ma mi puoi dare un aiuto su quanto detto sopra

  5. #5
    Originariamente inviato da fuoricorso
    ora funziona ma mi puoi dare un aiuto su quanto detto sopra
    Potresti usare le variabili d'ambiente. Le setti da Java sempre con ProcessBuilder (oppure con Runtime.exec()), le usi nel .bat e poi sempre da Java (oppure da .bat) le cancelli.
    Se non le conosci, cercando su google sicuramente troverai qualcosa a proposito

    Oppure potresti passarli come parametro al .bat
    codice:
    ProcessBuilder pb = new ProcessBuilder("C:\\nuovo.bat par1 par2");
    e poi li recuperi dal .bat con %1 e %2
    lolide
    Java Programmer

    Informati

  6. #6
    Originariamente inviato da lolide
    Potresti usare le variabili d'ambiente. Le setti da Java sempre con ProcessBuilder (oppure con Runtime.exec()), le usi nel .bat e poi sempre da Java (oppure da .bat) le cancelli.
    Se non le conosci, cercando su google sicuramente troverai qualcosa a proposito

    Oppure potresti passarli come parametro al .bat
    codice:
    ProcessBuilder pb = new ProcessBuilder("C:\\nuovo.bat par1 par2");
    e poi li recuperi dal .bat con %1 e %2
    Ciao E' proprio questo che voglio fare io scrivo questo:

    codice:
    ProcessBuilder pb = new ProcessBuilder("C:\\nuovo10.bat", path0 ,path1);
    path0 è il percorso di un file esistente mentre path1 è il percorso di un file che mi viene restituito dal programma che vado ad eseguire

    ed appunto recupero i path nel file batch con %var1 e %var2 in questo modo
    codice:
    C:\file.exe -i %var1 %var2
    ora qunado vado ad eseguire il programma esce senza fare quello che deve, in particolare se eseguo il file nuovo.bat nel file dove vado a scrivere l'output del programma lanciato mi dice che:

    var2: No such file or directory

    Mi aiuti a capire qual'è il problema

  7. #7
    Originariamente inviato da fuoricorso
    Ciao E' proprio questo che voglio fare io scrivo questo:

    codice:
    ProcessBuilder pb = new ProcessBuilder("C:\\nuovo10.bat", path0 ,path1);
    path0 è il percorso di un file esistente mentre path1 è il percorso di un file che mi viene restituito dal programma che vado ad eseguire

    ed appunto recupero i path nel file batch con %var1 e %var2 in questo modo
    codice:
    C:\file.exe -i %var1 %var2
    ora qunado vado ad eseguire il programma esce senza fare quello che deve, in particolare se eseguo il file nuovo10.bat nel file dove vado a scrivere l'output del programma lanciato mi dice che:

    var2: No such file or directory

    Mi aiuti a capire qual'è il problema

  8. #8
    Mi aiutate per favore non riesco a settare il file batch per recuperare i path che passo di volta in volta.

    Help me please

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.