Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1578 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Executer une ligne de commande windows en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Executer une ligne de commande windows en java

n°2298256
Lt Ripley
T'es à fond là ?
Posté le 25-03-2017 à 13:54:54  profilanswer
 

Salut
 
Je débute en java après avoir juste fait 3 bricoles en c++
 
Je voudrais être capable d'executer une ligne de commande de Windows dans un programme java
 
Ce code ne fonctionne pas.  Il est sensé faire un dir tout con, par la suite je veux pouvoir faire un shutdown /s /f /t 0  ou lancer un logiciel bref la ligne de commande windows quoi
 

Code :
  1. import java.io.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4.  // TODO Auto-generated method stub
  5.  String cmd = new String ("dir" );
  6.  Runtime rt = Runtime.getRuntime();
  7.  Process pr = rt.exec(cmd);
  8.  //pr.waitFor();  pour attendre la fin du process
  9. }
  10. }


 
J'ai cette erreur à la ligne 10 : unhandled exception type ioexception
 
Si vous pouvez m'aider c'est cool  :)  merci

mood
Publicité
Posté le 25-03-2017 à 13:54:54  profilanswer
 

n°2298319
DDT
Few understand
Posté le 28-03-2017 à 16:29:07  profilanswer
 

Ton new String sert à rien.
 
dir n'est pas un exécutable, c'est une primitive du shell.
Essaie plutôt

Code :
  1. rt.exec("cmd /c dir" )


 
Mais bon c'est vraiment pas le bon langage pour faire ce genre de choses.


---------------
click clack clunka thunk
n°2298320
Lt Ripley
T'es à fond là ?
Posté le 28-03-2017 à 17:36:41  profilanswer
 

Merci DDT
 
Je viens d'essayer ça me fait la même erreur : unhandled exception type ioexception
 

Code :
  1. import java.io.*;
  2. public class Main {
  3.   public static void main(String[] args) {
  4.     Runtime rt = Runtime.getRuntime();
  5.     rt.exec("cmd /c dir" );
  6.   }
  7. }


n°2298321
kadreg
profil: Utilisateur
Posté le 28-03-2017 à 17:51:11  profilanswer
 

https://www.jmdoudoux.fr/java/dej/c [...] ceptions-1

 

et je confirme que java n'est pas le langage pour faire ce genre de choses :/


Message édité par kadreg le 28-03-2017 à 17:51:32

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2298342
leonhard
Posté le 29-03-2017 à 15:18:09  profilanswer
 

Lt Ripley a écrit :

Merci DDT
 
Je viens d'essayer ça me fait la même erreur : unhandled exception type ioexception
 

Code :
  1. import java.io.*;
  2. public class Main {
  3.   public static void main(String[] args) {
  4.     Runtime rt = Runtime.getRuntime();
  5.     rt.exec("cmd /c dir" );
  6.   }
  7. }




 
Méthode courte (et crade !) : rajouter "throws IOException" juste avant l'accolade de la méthode "main".
 
Méthode un peu plus sérieuse: se demander quels sont les problèmes qui peuvent survenir lors de l'exécution de la commande. Quel répertoire faut-il afficher ? A-t-on toujours le droit de lister le contenu de ce répertoire ?
 Comment récupérer la sortie de la commande ? etc.. Une fois ces questions sérieusement posées et résolues "en français" on peut commencer à écrire le code java pour traiter l'exception.
 
 

n°2298350
Lt Ripley
T'es à fond là ?
Posté le 29-03-2017 à 18:37:40  profilanswer
 

Merci leonhard !
 
J'ai conscience que je dois apprendre à "gérer" les erreurs, avec des throw / throws / try et catch etc, je dois revoir tout ça.
 
Je viens d'essayer la methode crade : plus d'erreur mais pas de console qui s'ouvre ni rien.
 
Bon, en c++ c'est simple
 

Code :
  1. system("Shutdown /s /f /t 0" );
  2. system("dir" );


Tout ça fonctionne niquel alors je me demandais en java...
 
Merci à tous  ;)

n°2298377
Bidem
Posté le 30-03-2017 à 14:13:17  profilanswer
 

Quand tu fais un Runtime.exec, tu récupère un objet Process qui te permets de lire la sortie standard
 
Cf. la doc https://docs.oracle.com/javase/7/do [...] ntime.html
 
PS : pour faire un shutdown, tu dois bien utiliser Runtime. Par contre pour lister les fichiers d'un répertoire il y a largement plus simple :
 

Code :
  1. File repertoire = new File("C:/" );
  2. File[] fichiers = repertoire.listFiles();


n°2298397
Lt Ripley
T'es à fond là ?
Posté le 30-03-2017 à 16:26:16  profilanswer
 

Merci bidem
 
Grâce à toi je suis arrivé à faire un dir en ajoutant une boucle for qui parcourt l'objet fichiers et qui println
 
Le runtime je vais creuser

n°2298529
Lt Ripley
T'es à fond là ?
Posté le 31-03-2017 à 21:39:19  profilanswer
 

Warf j'ai trouvé sur stack overflow un code qui fonctionne
 
Ça fonctionne pour faire un ipconfig ou lancer un exe (mais pas s'il faut une élévation)
 
Mais throws IOException est nécessaire, prochaine étape un bloc try catch
 

Code :
  1. // pour faire un ipconfig et l'afficher
  2. Process p = Runtime.getRuntime().exec("ipconfig" );
  3. BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
  4. String readline;
  5. while ((readline = reader.readLine()) != null) {
  6. System.out.println(readline);
  7.         }
  8.        
  9. // lancer un exe (s'il faut une élévation de droits ça ne marche pas)
  10. Runtime.getRuntime().exec("d:/infrarecorder" );


 
Edit : Bon eh bien avec un try catch ça fonctionne impec sans le throws
 

Code :
  1. }catch (IOException e) {e.printStackTrace();}


Message édité par Lt Ripley le 31-03-2017 à 21:54:46

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Executer une ligne de commande windows en java

 

Sujets relatifs
Problème de relation JAVA EEcommande DOS
[JAVA] javax.awt manquantsupprimer retour à la ligne
[Java] Arrêt traitement si doublons dans champ d'un fichiersupprimer plusieurs retours à la ligne
lancer un programme python en ligne de commande sous windows 
Plus de sujets relatifs à : Executer une ligne de commande windows en java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR