Exécutez le fichier de commandes à partir du code Java
Je suis en train d'exécuter un fichier de commandes qui est dans un autre répertoire de 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'a pas accès au chemin d'accès du fichier que j'ai fournis.
- Si vous dites "start /?" à partir d'une fenêtre d'Invite de Commande, il sera de décrire les options de la
start
de commande; il y a un "/J <path>" option pourrait aider.
Vous devez vous connecter pour publier un commentaire.
Plutôt que
Runtime.exec(String command)
, vous devez utiliser leexec(String command, String[] envp, File dir)
signature de la méthode:Mais personnellement, je préfère utiliser
ProcessBuilder
au lieu de cela, ce qui est un peu plus détaillé, mais beaucoup plus facile à utiliser et à mettre au point queRuntime.exec()
.List cmdAndArgs = Arrays.asList(new String[]{"cmd.exe", "/C", "Start", "run.bat"});
essayez de suivre
Votre code est bien, mais le problème est à l'intérieur du fichier de commandes.
Vous montrer le contenu du fichier bat,
votre problème est dans les chemins à l'intérieur du fichier bat.
Suivant est travaillé pour moi
Cela fonctionnera pour vous et est facile à utiliser.