Moment de l'exécution.getRuntime().exec(), de masquer l'écran de la console
Je suis de l'exécution d'un fichier de commandes à l'aide du code Java. Le code est donné ci-dessous:
Process proc = null;
proc = Runtime.getRuntime().exec("cmd /c start somebat.bat");
Avec cela, la normale à l'invite de commande de l'écran s'ouvre. Maintenant, je veux supprimer/masquer la fenêtre d'invite de commandes(le noir). J'ai trouvé quelque part que si je retire le début de l'attribut de la commande, il n'apparaît pas, mais lorsque vous la retirez de la commande, la commande ne s'exécute et, sans exception, sont également indiqués.
Tout organisme peut me dire comment supprimer cette fenêtre?
Ajouter une sortie à la fin du script de commandes.
OriginalL'auteur | 2009-06-15
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé l'option B de "démarrer"?
Edit:
Ok, Anish, c'est drôle que votre code n'est pas exécuté.
J'ai mis en place une unité de test:
Mon somebat.bat fichier ressemble à ceci:
Tous les trois versions dans le try-bloc de travail ci-dessus dans mon scénario. Somebat.chauve-souris est copié à somebat2.chauve-souris sans une fenêtre de commande popping up (ce qui se passe, si j'utilise votre appel, indiqué dans votre question).
Edit 2: Prochain tour 😉
Anish, pouvez-vous nous montrer comment votre somebat.chauve-souris et de votre ant fichier ressemble?
Parce que tous les trois appels en dessous de travailler dans mon scénario:
code de test:
somebat.chauve-souris:
build.xml:
myfile.txt: arbitraire fichier texte
En fait, une fourmi commande est exécutée dans mon fichier de commandes. C'est seulement exécuté avec l'appel suivant. Avec d'autres options il n'a jamais été exécuté. "cmd /c start D:\\temp\_test\\somebat.bat"
Si vous exécutez seulement une fourmi de commande vous pouvez aussi envisager de le faire directement à partir de java: toutes les tâches Ant peut être consulté que les classes et il suffit d'exécuter (compte tenu de la bonne configuration) et Ant lui-même peut également être appelée à partir de l'intérieur de Java (voir, par exemple: ibm.com/developerworks/websphere/library/techarticles/... )
Il exécute le traitement, mais elle n'exécute qu'une copie du programme, et il a également paralyse si elle ne le fait que par défaut.
OriginalL'auteur John Smithers
OriginalL'auteur user1768108
Ajouter
/Q
Je sais que c'est une assez vieille question, mais cette réponse serait peut-être travailler si /Q et /c ont été passés.
OriginalL'auteur jitter
Vous pouvez utiliser le bouton "exécuter" au lieu de "démarrer".
Runtime.getRuntime().exec("cmd /c run somebat.bat");
OriginalL'auteur erdem
Avez-vous essayé
Cela permettra de exécuter votre fichier de commandes sans la fenêtre. Il apparaîtra toujours dans la barre des tâches, cependant (car il est minimisé)
OriginalL'auteur Brian Agnew
Jetez un oeil à cette post sur le forum. L'une des réponses suggèrent d'utiliser un script vbs pour masquer la fenêtre.
OriginalL'auteur kgiannakakis
Essayez ceci:
OriginalL'auteur gustavo
Je ne sais pas windows très bien, mais je suggère que vous omettez le "cmd" bits de la commande. cmd.exe est windows terminal. Juste une supposition. Rechercher les autres exec() les méthodes, il y en a un qui prend la commande exécutable à exécuter, et les arguments. Sur UNIX, au moins, vous ne pouvez pas normalement faire quelque chose d'un shell ne prend pas en charge (comme la tuyauterie de la sortie vers un fichier) car ceux-ci sont shell caractéristiques et ne se fait pas par le programme. Peut-être pourquoi vous trouver si vous supprimez le cmd préfixe certaines choses ne fonctionnent pas.
essayez juste d':
Process proc = Runtime.getRuntime().exec("somebat.bat");
Avez-vous essayez de spécifier le chemin d'accès complet?
Oui j'ai essayé, mais le fichier de commandes n'a pas exécuté.
OriginalL'auteur gubby