WaitFor()

soyen -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

J'ai un autre souci maintenant car le waitFor() génére une exception que je n'arrive pas à gérer :

try{

String[] command = { "cmd.exe", "/C", "Start", "E://fichier.bat" };
Runtine.getRuntine().exec(command).waitFor();
system.out.println(dir[i]);
}catch (IOException e) {
e.printStrackTrace();
}

merci d'avance

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Il n'y a aucun intérêt de faire un exec sur cmd.exe pour lancer un .bat
    Tu peux directement faire l'exec sur le fichier .bat

    Runtime.getRuntime().exec("E:/fichier.bat");

    Remarque :
    Selon ce qu'il y a dedans tu peux aussi réécrire les instructions de ton .bat en Java, parce que ça ne sert à rien de faire un programme Java si c'est pour faire du batch !
    0
  2. soyen
     
    Merci, mais ça ne fonctionne toujours pas...

    Runtime.getRuntime().exec("E:/fichier.bat").waitFor();

    génère une exception que je n'arrive toujours pas à gérer

    merci encore pour votre aide
    0
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    "génère une exception que je n'arrive toujours pas à gérer"
    Il faudrait être plus précis, comment on fait pour deviner le problème ?

    Moi je viens de vérifier la syntaxe et avec un petit fichier .bat tout simple ça fonctionne, ton problème vient donc soit de ton fichier .bat soit du reste de ton code.

    Voici un exemple complet :
    Dans le dossier "C:\" j'ai un fichier "test1.txt" que je veux renommer "test2.txt", je me sers donc d'un fichier "C:\test.bat" qui utilise la commande "ren test1.txt test2.txt" après s'être positionné dans le lecteur C: et le dossier C:\

    Contenu du fichier C:\test.bat :

    C:
    cd C:\
    ren test1.txt test2.txt

    Contenu du fichier Test.java :

    public class Test
    {
    public static void main(String[] args)
    {
        try 
        {
            Runtime.getRuntime().exec("C:/test.bat").waitFor();
        } 
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    }

    Remarque : le positionnement sur le disque C: et le répertoire C:\ peut se faire directement avec le code Java.

    Contenu du fichier C:\test.bat :

    ren test1.txt test2.txt

    Contenu du fichier Test.java :

    import java.io.File;
    
    public class Test
    {
    public static void main(String[] args)
    {
        try 
        {
            Runtime.getRuntime().exec("C:/test.bat",null,new File("C:/").waitFor();
        } 
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    }

    Remarque : renommer le fichier aussi peut se faire directement en Java, pas besoin d'un fichier .bat. D'ailleurs dans la plupart des cas on peux se passer d'un fichier .bat parce que Java permet de faire à peu près tout !

    import java.io.File;
    
    public class Test
    {
    public static void main(String[] args)
    {
        new File("C:/test1.txt").renameTo(new File("C:/test2.txt"));
    }
    }

    Bref, la commande exec fonctionne sur les fichiers .bat, soit plus précis concernant ton exception pour qu'on t'aide au mieux...
    0