Bonjour à tous,
J'ai hésité à mettre ce sujet ici puisqu'il est un peu bâtard. Voilà j'appelle un script .bat en java qui a pour but de supprimer le dossier contenant (entre autres) les .jar eux-mêmes, puis s'auto-supprimer. Pour des raisons évidentes il doit être lancé dans un processus différent du java et attendre que le programme se soit arrêté.
Voici mon script :
Je met une tempo de cinq secondes pour donner le temps au java de s'arrêter, je sort le processus du dossier à supprimer, je le détruit et je supprime le .bat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ping 1.1.1.1 -n 1 -w 5000 > nul cd .. rmdir Dossier /s /q DEL autoDestruct.bat
Si j'appelle la commande comme ceci :
Il supprime tout comme il faut mais une fenêtre apparaît, pire encore elle reste après la fin du script malgré le /C. Je peux toujours rajouter @echo off et /min mais la fenêtre qui reste dans la barre des tâches reste inacceptable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Runtime.getRuntime().exec("cmd /C start ..\\autoDestruct.bat");
Du coup j'ai essayé ceci :
La bonne nouvelle c'est que le /B fait en effet disparaître la commande, mais le malheur c'est que le .bat s'arrête en même temps que le java! Mon diagnostique c'est que ce que windows appelle "créer une fenêtre cachée" c'est juste "exécuter les commandes dans le processus actuel", rendant mon script irréalisable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Runtime.getRuntime().exec("cmd /C start \"\" /B ..\\autoDestruct.bat");
Du coup si quelqu'un ici connaissait un moyen d'exécuter le script dans un nouveau processus ET d'avoir la fenêtre invisible (ou au moins qui se ferme à la fin du script) je serais vraiment reconnaissant, merci d'avance.
Partager