WaitFor()

Fermé
soyen - 24 avril 2013 à 20:35
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 25 avril 2013 à 18:53
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

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
24 avril 2013 à 20:54
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
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
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
25 avril 2013 à 18:53
"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