2009-03-02 10 views
2

Je sais comment démarrer le fichier de commandes en utilisant le code java. Lorsque je cours, l'invite de commande du fichier de commandes est ouverte. Pour fermer l'invite de commande, j'utilise taskill/im cmd.exe. mais le problème est que l'invite de commande qui est utilisée pour démarrer le jboss est également fermée. Je veux tuer le cmd avec un identifiant de processus particulier. Comment puis-je obtenir l'ID de processus d'un cmd promt particulier et le supprimer en utilisant javaquitter le fichier de commandes après l'exécution en utilisant java

+0

Je s'inscrire JBoss en tant que service à la place. Par exemple, voir ce script que j'ai écrit: https://gist.github.com/djangofan/5639409 – djangofan

Répondre

3

Exécutez le fichier de commandes avec cmd.exe /c job.bat. Le commutateur /c exécute la commande et met ensuite fin à l'interpréteur de commandes.

2

pouvez-vous ajouter exit à votre fichier de commandes pour quitter son propre invite de commande. Uisng taskill semble trop rapide pour juste fermer une invite de commande, vous ne pensez pas? PS: Je n'ai jamais travaillé sur des fichiers batch uniquement à l'invite de commande, donc je suppose qu'il accepte les mêmes commandes.

+0

Votre idée est bonne. mais le problème est que je veux le fermer après 15 minutes. si je donne la sortie dans le fichier batch, il se fermera immédiatement. –

+0

La réponse de zach n'attend pas non plus 15 minutes! –

1

Si vous démarrez le fichier de commandes avec Runtime.exec(), il vous renvoie un objet Process. Appeler la méthode destroy() va tuer ce processus.

+0

il va tuer le processus mais ne ferme pas l'invite de commande –

+0

@abc: Vous devez combiner cette astuce avec le "cmd/c". –

0

J'ai aussi eu le même problème. J'ai d'abord utilisé comme

Runtime.getRuntime().exec("cmd.exe start /c test.bat"); 

Puis j'ai essayé comme ci-dessous. Ça fonctionne bien.

Runtime.getRuntime().exec("cmd.exe /c start test.bat"); 

Essayez ceci.

0

Bien que cela semble être une question ancienne et probablement résolu .. Je me suis battu avec la même chose depuis longtemps .. Enfin cela fonctionne

String command = "cmd.exe /c build.bat"; 
Runtime rt = Runtime().getRuntime(); 
Process pr = rt.exec(command); 
2

Voici la solution qui fonctionne: pour fermer la fenêtre de commande Après avoir exécuté les commandes du fichier batch (.bat), vous devez ajouter "exit" (sans les guillemets) dans une nouvelle ligne de votre fichier batch. Si vous voulez retarder l'exécution c'est le chemin et il fonctionne:

public class TestSleep 
{ 
    public static void main (String [ ] args) 
    { 
     System.out.println("Do this stuff"); 
     try 
     { 
      Thread.currentThread().sleep(3000); 
     } 
     catch (Exception e) { } 
     System.out.println("Now do everything after this"); 
    } 
} 

Vive

Questions connexes