
La séance de questions et réponses d’aujourd’hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté.
La question
Le lecteur de SuperUser, Jake, veut exécuter un fichier BAT de manière invisible, il écrit:
I have installed a ruby gem called Redcar, which is launched from the command line. When it runs, it steals the shell until it terminates, so I have to create a new shell window to continue doing command line work. The shell I’m using is the GITBash shell from MySysGit.
I found a Redcar.bat file which is meant to launch Redcar as a shortcut, I presume, but I don’t want the extra command prompt window to open whenever I launch the BAT file.
How do I just run the BAT without seeing the prompt?
Existe-t-il une solution au désir furtif de Jake?
Les réponses
Afrazier, contributeur à SuperUser, répond avec une combinaison de mauvaises et de bonnes nouvelles:
You can’t - executing a batch file with the built in Command Prompt is going to keep a window open until the batch file exits.
What you can do is take steps to make sure that the batch file exits as quickly as possible. If at all possible, modify the batch file to run whatever program with the
start
commander. Par défaut,
start
retourne immédiatement sans attendre que le programme se termine, ainsi le fichier de commandes continuera à s'exécuter et, vraisemblablement, se fermera immédiatement. Ajoutez à cela la modification de votre raccourci pour exécuter le fichier de commandes minimisé et vous ne verrez que la barre des tâches clignoter sans même voir une fenêtre à l'écran.
Un inconvénient à cela est que si vous exécutez un programme en mode console, qui contient de nombreux interprètes de script, le fichier de commandes attendra la fin du programme et
start
va engendrer une nouvelle fenêtre de console. Dans ce cas, vous devez exécuter la version Windows de l'interpréteur au lieu de la version console.
start
nécessaire. Pour Perl, vous courriez
wperl.exe
au lieu de
perl.exe
. Pour Python, c’est
pythonw.exe
au lieu de
python.exe
. L'ancienne distribution Win32 Ruby que j'ai téléchargée a
rubyw.exe
qui devrait faire la même chose.
Une dernière possibilité consiste à utiliser un outil tiers pour exécuter l'invite de commande avec une fenêtre masquée. J'ai entendu parler de telles choses, mais je ne les ai jamais utilisées. Je ne sais donc rien de particulier à vous signaler.
Les lecteurs l'ont également dirigé vers un autre fil de discussion SuperUser qui explique comment utiliser un script Visual Basic pour aller au-delà de la réduction de la visibilité et masquer carrément l'invite CMD. Dans ce fil, Harry MC explique:
Solution 1:
Save this one line of text as file
invisible.vbs
:
CreateObject (“Wscript.Shell”). Exécutez “””” & WScript.Arguments (0) & “”””, 0, False
Pour exécuter n'importe quel programme ou fichier batch de manière invisible, utilisez-le comme ceci:
wscript.exe “C: Wherever invisible.vbs” “C: Un autre endroit MyBatchFile.bat”
Pour pouvoir également transmettre / relayer une liste d'arguments, utilisez uniquement deux guillemets doubles.
CreateObject (“Wscript.Shell”). Exécutez “” et WScript.Arguments (0) & “”, 0, False
Par exemple: Invisible.vbs “Kill.vbs ME.exe”
Solution 2:
Utilisez un outil de ligne de commande pour lancer un processus en mode silencieux: Silencieux.
L'utilisation de l'une des solutions ci-dessus, en fonction de votre niveau de confort d'utilisation de VBS, d'outils tiers ou non, réduira au minimum la visibilité de la fenêtre CMD ou la supprimera totalement.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.