web-dev-qa-db-fra.com

Exécuter un fichier de commandes à partir de code Java

J'essaie d'exécuter un fichier de commandes qui se trouve dans un autre répertoire que mon exécutable Java. J'ai le code suivant :

    try {
        Process p =  Runtime.getRuntime().exec("cmd /c start \"C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert\\upsert.bat\"") ;           
    } catch (IOException ex) {
    }

Le résultat est que le programme ouvre une fenêtre cmd dans le répertoire racine où le programme a été exécuté et n'accède pas au chemin du fichier que j'ai fourni.

7
Ricardo

Plutôt que Runtime.exec(String command), vous devez utiliser la signature de la méthode exec(String command, String[] envp, File dir):

Process p =  Runtime.getRuntime().exec("cmd /c upsert.bat", null, new File("C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert"));

Mais personnellement, j'utiliserais plutôt ProcessBuilder, ce qui est un peu plus détaillé mais beaucoup plus facile à utiliser et à déboguer que Runtime.exec().

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "upsert.bat");
File dir = new File("C:/Program Files/salesforce.com/Data Loader/cliq_process/upsert");
pb.directory(dir);
Process p = pb.start();
27
rob

essayez de suivre

try {
            String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"};
            Process p =  Runtime.getRuntime().exec(command);           
        } catch (IOException ex) {
        }
6
VD'

Votre code est correct, mais le problème réside dans le fichier de commandes.

Vous devez afficher le contenu du fichier chauve-souris, Votre problème réside dans les chemins d'accès à l'intérieur du fichier chauve-souris.

2
kdureidy

Suivre est fait pour moi

File dir = new File("E:\\test");
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start","test.bat");
        pb.directory(dir);
        Process p = pb.start();
2
Krunal Chauhan
import Java.lang.Runtime;

Process run = Runtime.getRuntime().exec("cmd.exe", "/c", "Start", "path of the bat file");

Cela fonctionnera pour vous et est facile à utiliser.

0
Amit Kumar