Dans mon application Java, je souhaite exécuter un fichier batch qui appelle " scons -Q implicit-deps-changed build\file_load_type export\file_load_type
"
Il semble que je ne parviens même pas à exécuter mon fichier batch. Je suis à court d'idées.
Voici ce que j'ai en Java:
Runtime.
getRuntime().
exec("build.bat", null, new File("."));
Auparavant, j'avais un fichier Python Sconscript que je voulais exécuter mais comme cela ne fonctionnait pas, j'ai décidé d'appeler le script via un fichier de commandes, mais cette méthode n'a pas encore réussi.
la source
Win+R
(Runtime) peut exécuter directement des fichiers batch.Parfois, le temps du processus d'exécution du thread est supérieur au temps du processus d'attente du thread JVM, cela se produit lorsque le processus que vous appelez prend un certain temps à être traité, utilisez la commande waitFor () comme suit:
De cette façon, la JVM s'arrêtera jusqu'à ce que le processus que vous invoquez soit terminé avant de continuer avec la pile d'exécution de thread.
la source
la source
Pour exécuter des fichiers de commandes en utilisant java si vous parlez de ...
Cela devrait le faire.
la source
ProcessBuilder est le moyen Java 5/6 d'exécuter des processus externes.
la source
L'exécutable utilisé pour exécuter les scripts batch est celui
cmd.exe
qui utilise l'/c
indicateur pour spécifier le nom du fichier batch à exécuter:Théoriquement, vous devriez également pouvoir exécuter Scons de cette manière, même si je n'ai pas testé ceci:
EDIT: Amara, vous dites que cela ne fonctionne pas. L'erreur que vous avez répertoriée est l'erreur que vous obtiendrez lors de l'exécution de Java à partir d'un terminal Cygwin sur une boîte Windows; est-ce ce que vous faites? Le problème avec cela est que Windows et Cygwin ont des chemins différents, donc la version Windows de Java ne trouvera pas l'exécutable scons sur votre chemin Cygwin. Je peux vous expliquer davantage si cela s'avère être votre problème.
la source
testé avec jdk1.5 et jdk1.6
Cela fonctionnait bien pour moi, j'espère que cela aidera les autres aussi. pour obtenir cela, j'ai lutté plus de jours. :(
la source
J'ai eu le même problème. Cependant, parfois, CMD n'a pas réussi à exécuter mes fichiers. C'est pourquoi je crée un temp.bat sur mon bureau, ensuite ce temp.bat va exécuter mon fichier, et ensuite le fichier temporaire va être supprimé.
Je sais que c'est un code plus gros, mais a fonctionné pour moi à 100% lorsque même Runtime.getRuntime (). Exec () a échoué.
la source
Ce qui suit fonctionne bien:
la source
Ce code exécutera deux commandes.bat qui existent dans le chemin C: / folders / folder.
la source
Pour développer la réponse de @ Isha, vous pouvez simplement faire ce qui suit pour obtenir la sortie renvoyée (post-facto pas en temps réel) du script qui a été exécuté:
la source