69 votes

Comment créer un fichier batch Windows qui n'affiche pas l'invite de commande lors de son exécution ?

J'ai installé une gemme ruby appelée Redcar, qui est lancée depuis la ligne de commande. Lorsqu'elle s'exécute, elle vole la Shell jusqu'à ce qu'elle se termine, je dois donc créer une nouvelle fenêtre Shell pour continuer à faire du travail en ligne de commande. Le Shell que j'utilise est le Shell de GITBash de MySysGit.

J'ai trouvé un fichier Redcar.bat qui est censé lancer Redcar comme un raccourci, je suppose, mais je ne veux pas que la fenêtre d'invite de commande supplémentaire s'ouvre chaque fois que je lance le fichier BAT.

Comment puis-je exécuter le BAT sans voir l'invite ?

43voto

afrazier Points 22479

Vous ne pouvez pas -- l'exécution d'un fichier batch avec l'invite de commande intégrée va garder une fenêtre ouverte jusqu'à la sortie du fichier batch.

Ce que vous puede est de prendre des mesures pour s'assurer que le fichier batch se termine aussi rapidement que possible. Dans la mesure du possible, modifiez le fichier batch pour qu'il exécute n'importe quel programme avec l'extension start commande. Par défaut, start retourne immédiatement sans attendre que le programme se termine, de sorte que le fichier batch continue à s'exécuter et, vraisemblablement, se termine immédiatement. Ajoutez à cela la modification de votre raccourci pour exécuter le fichier batch en mode réduit, et vous ne verrez que la barre des tâches clignoter sans même voir une fenêtre à l'écran.

Une mise en garde à ce sujet est que si vous exécutez un programme en mode console, ce qui est le cas de beaucoup d'interpréteurs de script, le fichier batch attendra que le programme se termine, et en utilisant start va créer une nouvelle fenêtre de console. Ce que vous devez faire dans ce cas est d'exécuter la version Windows de l'interpréteur au lieu de la version console -- pas de start nécessaire. Pour Perl, vous devez exécuter 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é est d'utiliser un outil tiers pour exécuter l'invite de commande dans une fenêtre cachée. J'ai entendu parler de ce genre de choses mais je n'en ai jamais eu l'utilité, donc je ne connais rien de particulier à vous indiquer.

26voto

indago Points 361

Je pense que c'est la solution la plus simple et la plus courte pour exécuter un fichier batch sans ouvrir la fenêtre DOS, cela peut être très distrayant lorsque vous voulez planifier un ensemble de commandes à exécuter périodiquement, donc la fenêtre DOS continue de surgir, voici votre solution. Utilisez un VB script pour appeler le fichier batch ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Copiez les lignes ci-dessus dans un éditeur et enregistrez le fichier avec l'extension .VBS. Modifiez le nom et le chemin du fichier .BAT en conséquence. Ensuite, exécutez le fichier .vbs et la magie opère !

Vous pouvez créer une tâche sur le planificateur de tâches, puis dans l'onglet Action devrait être Start a program puis sélectionnez ceci .vbs script que vous avez créé. En fonction de vos besoins, vous pouvez remplir et enregistrer les autres propriétés.

11voto

passick Points 151

Vous pouvez exécuter un autre fichier batch avec START /MIN CMD.EXE /C mybatchfile.bat à partir de l'invite de commande.

De l'extérieur, cela fera apparaître la fenêtre de la console cmd mais pour éviter cela, vous pouvez créer un raccourci avec propriétés modifié pour début minimisé .

7voto

Adonis Darwish Points 61

Pour poursuivre la réponse de Dennis Williamson, vous pouvez modifier le fichier de commandes et ajouter (prepend) START /B à la commande que vous exécutez.

Par exemple, j'ai un fichier batch qui exécute putty et j'ai eu le même problème (CMD supplémentaire), donc voilà comment je l'ai écrit :

@ECHO OFF
START /B putty.exe -load _name\_of\_my\_config\_file_

Cela a fonctionné parfaitement.

6voto

Pour ce faire, utilisez le programme Convertir Bat en Exe pour convertir votre fichier batch en fichier exécutable.

Lors de la conversion en un exécutable, vous trouverez une option pour exécuter votre fichier en tant que Application invisible dans la section visibilité. Ainsi, lorsque vous l'exécuterez, il fonctionnera sans fenêtre.

Bat to exe

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X