J'ai installé un gemme de rubis appelé Redcar, qui est lancé à partir de la ligne de commande. Quand il court, il vole le shell jusqu'à ce qu'il se termine, alors je dois créer une nouvelle fenêtre de shell pour continuer à faire des travaux de 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 en tant que raccourci, je présume, mais je ne veux pas que la fenêtre d'invite de commande supplémentaire s'ouvre quand je lance le fichier BAT.
Comment puis-je simplement exécuter les MTD sans voir l'invite?
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 disparaisse.
Ce que vous pouvez faire, c'est de prendre des mesures pour vous assurer que le fichier de commandes sort le plus rapidement possible. Dans la mesure du possible, modifiez le fichier de commandes pour exécuter n'importe quel programme avec la commande de start
. Par défaut, le start
retourne immédiatement sans attendre que le programme quitte, de sorte que le fichier de commandes continuera à s'exécuter et, vraisemblablement, sortira immédiatement. Couple que, avec la modification de votre raccourci pour exécuter le fichier batch minimisé, et vous ne verrez que la barre des tâches flash sans même voir une fenêtre à l'écran.
Une mise en garde à cela est que si vous exécutez un programme en mode console, quel sont les nombreux interprètes de script, le fichier de commandes attendra le start
du programme et l'utilisation du start
générera une nouvelle fenêtre de console. Ce que vous devez faire dans ce cas est d'exécuter la version basée sur Windows de l'interpréteur au lieu de la console-based one – sans start
nécessaire. Pour Perl, vous exécuteriez wperl.exe
au lieu de perl.exe
. Pour Python, c'est pythonw.exe
au lieu de python.exe
. L'ancienne distribution de rubyw.exe
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 ces choses, mais je n'ai jamais eu d'utilité pour elles, donc je ne connais rien en particulier pour vous signaler.
Je pense que c'est la solution la plus simple et la plus simple pour l'exécution d'un fichier batch sans ouvrir la fenêtre DOS. Cela peut être très distrayant lorsque vous souhaitez programmer un ensemble de commandes pour s'exécuter périodiquement, alors la fenêtre DOS continue d'apparaître, voici votre solution . Utilisez un script VB 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 à un éditeur et enregistrez le fichier avec l'extension .VBS. Modifiez le nom de fichier .BAT et le chemin en conséquence. Ensuite, exécutez le fichier .vbs et la magie arrive!
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, il apportera la fenêtre de la console cmd, mais pour éviter cela, vous pouvez créer un fichier raccourci avec les propriétés modifiées pour commencer minimisé .
Donnez-lui un essai:
START /B batchfile
Note ajoutée par barlop
début /? 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.
Je ne suis pas clair quant à votre problème, mais avec certains de mes fichiers batch, j'utilise un "dumy" qui a pour seul but de lancer le fichier batch principal.
Alors 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 du fichier en lots 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: ...
Suite à la réponse de Dennis Williamson, vous pouvez éditer le fichier batch et ajouter (préciser) START /B
à la commande que vous exécutez.
Par exemple, j'ai un fichier batch qui exécute du mastic et a eu le même problème (CMD supplémentaire), alors c'est ainsi que je l'ai écrit:
@ECHO OFF START / B putty.exe -load name_of_my_config_file
Cela a parfaitement fonctionné.
Vous pouvez utiliser RunHiddenConsole
hideExec.bat
@echo off RunHiddenConsole batch.bat
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 de visibilité. Ainsi, lorsque vous l'exécutez, il fonctionnera sans fenêtre.
Si vous êtes toujours intéressé à ne pas afficher la fenêtre de la console, voici une solution de stackoverflow qui a fonctionné pour moi (dans mon cas, je n'ai rien mis dans le registre, mais où j'avais besoin).
Il suffit de mettre le commutateur / b en face du chemin. Il n'ouvrira pas la deuxième invite de commande.
La réponse d'Indago a été la meilleure solution pour moi jusqu'à présent. Le fichier VBS me permet d'exécuter la fonctionnalité du lot via le script, ce qui empêche la fenêtre CMD de se produire en premier lieu. Il y a quelques remarques:
Si votre lot nécessite des droits d'administrateur, 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 est en fait la façon dont vous le souhaitez.
Cela dit, j'aimerais mettre un peu de test de configuration / unité avant de vous assurer que cela fonctionne exactement comme vous le souhaitez, avant de l'intégrer.
J'ai utilisé cmdow dans le passé, et il semble avoir travaillé pour ce que je veux.
Vous voudrez probablement utiliser l'une des options suivantes: CMDOW [window] /HID
/HID
masque 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 fermer (certaines fenêtres peuvent ouvrir une boîte de dialogue)
J'espère que cela t'aides.
Il suffit de faire un raccourci vers le fichier batch, cliquez droit dessus, cliquez sur Properties
, passez à General
onglet General
, cochez la case Hidden
, cliquez sur Apply
, puis sur OK
.
Maintenant, lorsque vous ouvrez le raccourci, il exécutera le fichier de commandes caché.