2011-01-14 18:23:22 +0000 2011-01-14 18:23:22 +0000
59
59

Comment puis-je créer un fichier Windows Batch qui n'affiche pas l'invite de commande lorsqu'il est exécuté ?

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

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

Comment puis-je simplement lancer le BAT sans voir l'invite ?

Réponses (11)

38
38
38
2011-01-21 18:41:45 +0000

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'à ce que le fichier batch se termine.

Ce que vous pouvez faire est de prendre des mesures pour vous assurer que le fichier batch se termine aussi vite que possible. Si possible, modifiez le fichier batch pour exécuter n'importe quel programme avec la commande start. Par défaut, start revient immédiatement sans attendre que le programme se termine, de sorte que le fichier batch continuera à s'exécuter et, vraisemblablement, se terminera immédiatement. Ajoutez à cela le fait que la modification de votre raccourci pour exécuter le fichier batch est minimisée, et vous ne verrez que la barre des tâches clignoter sans même voir une fenêtre à l'écran.

Une mise en garde s'impose : si vous exécutez un programme en mode console, ce qui est le cas de nombreux interprètes de script, le fichier batch attendra que le programme se termine, et l'utilisation de start fera apparaître 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 – pas de start nécessaire. Pour Perl, vous lanceriez wperl.exe au lieu de perl.exe. Pour Python, c'est pythonw.exe au lieu de python.exe. L'ancienne distribution Ruby win32 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 avec 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 qui puisse vous indiquer la marche à suivre.

22
22
22
2014-01-15 06:25:25 +0000

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 quand vous voulez programmer un ensemble de commandes à exécuter périodiquement, donc la fenêtre DOS continue d'apparaître, 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 d'accès du fichier .BAT en conséquence. Ensuite, lancez le fichier .vbs et la magie opère !

8
8
8
2013-01-02 05:37:05 +0000

Vous pouvez lancer 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 fichier raccourci avec propriétés modifiées en démarrage minimisé.

5
5
5
2016-09-11 08:06:00 +0000

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

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

4
4
4
2012-12-18 07:07:00 +0000

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

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

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

Cela a fonctionné parfaitement.

4
4
4
2011-01-14 19:32:24 +0000

Essayez ceci :

START /B batchfile

note ajoutée par barlop

start / ? dit de /B

B Start application without creating a new window. The
             application has ^C handling ignored. Unless the application
             enables ^C processing, ^Break is the only way to interrupt
             the application.
3
3
3
2015-04-25 09:00:42 +0000

Vous pouvez utiliser RunHiddenConsole

hideExec.bat

@echo off
RunHiddenConsole batch.bat
3
3
3
2011-01-21 18:20:43 +0000

Je ne suis pas clair quant à votre problème, mais avec certains de mes fichiers batch, j'utilise un “dumy” dont le seul but est de lancer le fichier batch principal.

Donc GO.BAT aura :

cmd /c go2.bat %1 %2 %3
exit

La sortie ferme la fenêtre d'invite de commande qui resterait autrement ouverte.

Et GO2.BAT aura le contenu réel du fichier batch que je souhaite.

@echo off
  set userid=

  if NOT [%1]==[] goto userid:
  set /p userid=Enter USERID:  
  goto set_usr:

 :userid
 set userid=%1
 shift

 :set_usr
 if %userid%==steven goto steven:
 ...
0
0
0
2013-03-04 00:36:09 +0000

Il suffit de mettre le commutateur /b devant le chemin. Cela n'ouvrira pas la deuxième invite de commande.

0
0
0
2014-10-18 16:43:48 +0000

La réponse d'Indago ](https://superuser.com/a/701867/141909) a été la meilleure solution pour moi jusqu'à présent. Le fichier VBS me permet d'exécuter la fonctionnalité du lot par le biais du script, ce qui empêche la fenêtre CMD de se produire en premier lieu. Si votre lot nécessite des droits d'administration, créez ou utilisez un lot existant qui appelle le VBS et exécutez ce lot en tant qu'administrateur. Sans visibilité, il peut être difficile de discerner si ce que vous essayez de faire fonctionne réellement comme vous le souhaitez.

Ceci dit, je mettrais d'abord un petit test de l'unité pour m'assurer qu'elle fonctionne exactement comme vous le souhaitez, avant de l'intégrer.

0
0
0
2016-05-20 07:11:31 +0000

J'ai utilisé cmdow dans le passé, et il semble avoir fonctionné pour ce que je veux.

Vous voudrez probablement utiliser une des options suivantes : CMDOW [window] /HID

/HID cache la fenêtre spécifiée

CMDOW [window] /END

/END ferme la fenêtre spécifiée

CMDOW [window] /CLS

/CLS demande poliment à la fenêtre de se fermer (certaines fenêtres peuvent ouvrir une boîte de dialogue)

espère que cela vous aidera.