Masquer la Fenêtre de Commande.Fichier BAT qui exécute un autre.EXE
Il s'agit d'un fichier batch dans Windows.
Voici mon .fichier bat
@echo off
copy "C:Remoting.config-Training" "C:Remoting.config"
"C:ThirdParty.exe"
Cela fonctionne bien sauf le .bat file laisse la fenêtre de commande ouverte tout le temps que l'application "ThirdParty" est en cours d'exécution.
J'ai besoin de la fenêtre de commande pour fermer.
J'utiliserais le raccourci pour l'application mais je dois pouvoir exécuter cette commande de copie en premier (elle change réellement la base de données et le serveur à utiliser pour l'application).
La demande de tiers ne autoriser l'utilisateur à modifier la source de la base de données ou du serveur d'applications.
, Nous faisons cela pour permettre aux utilisateurs de passer d'un environnement de test à l'environnement de production.
14 réponses
Utiliser start
fonctionne pour moi:
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
EDIT: Ok, en regardant de plus près, start
semble interpréter le premier paramètre comme le nouveau titre de la fenêtre s'il est cité. Donc, si vous avez besoin de citer le chemin vers votre Troisièmepartie.exe vous devez également fournir une chaîne de titre.
Exemples:
:: Title not needed:
start C:\ThirdParty.exe
:: Title needed
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe"
Créez un fichier .vbs
avec ce code:
CreateObject ("Wscript.Shell").Exécutez " your_batch.chauve-souris",0,True
Ce {[0] } exécutera your_batch.bat
caché.
Fonctionne très bien pour moi.
Essayez ceci:
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
exit
L'utilisation de start
fonctionne correctement, sauf si vous utilisez un langage de script. Heureusement, il y a un moyen de sortir pour Python-il suffit d'utiliser pythonw.exe
au lieu de python.exe
:
:: Title not needed:
start pythonw.exe application.py
Si vous avez besoin de citations, faites ceci:
:: Title needed
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py"
Bon conseil. Il fonctionne avec les fichiers batch qui exécutent un programme java aussi.
start javaw -classpath "%CP%" main.Main
Je n'ai pas vraiment trouvé un bon moyen de le faire nativement, donc j'utilise juste un utilitaire appelé hstart qui le fait pour moi. S'il y a un moyen plus propre de le faire, ce serait bien.
Vous pouvez créer un script VBS qui forcera la fenêtre à être masquée.
Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS
Distributed\SwE.bat""", 0)
set WshShell = Nothing
Ensuite, plutôt que d'exécuter le fichier batch, exécutez le script.
Compiler le fichier batch à un exécutable en utilisant Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e . Utilisez l'option "fenêtre Invisible".
Vous pourriez être intéressé à essayer mon programme silentbatch , qui exécutera un .bat
/.cmd
script, supprimez entièrement la création de la fenêtre D'invite de commande (de sorte que vous ne la verrez pas apparaître puis disparaître), et enregistrez éventuellement la sortie dans un fichier spécifié.
Exécutez-le sous un autre utilisateur. en supposant qu'il s'agisse d'une boîte windows, créez un compte utilisateur pour les tâches planifiées. exécuter en tant qu'utilisateur. L'invite de commande affichera uniquement pour l'utilisateur actuellement connecté.
Veuillez utiliser celui-ci, ce qui précède ne fonctionne pas. J'ai testé dans Window server 2003.
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
Start /I "" "C:\ThirdParty.exe"
exit
Pour faire la fenêtre de commande d'un .fichier bat qui exécute un .exe sortie du fichier aussi vite que possible, utilisez la ligne @start
avant le fichier que vous essayez d'exécuter. Voici un exemple:
(insert other code here)
@start executable.exe
(insert other code here)
Vous n'avez pas besoin d'utiliser un autre code avec @start executable.exe
.
, Ou vous pouvez utiliser :
Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1
( %1 est si un fichier, est passé à votre exécutable, par exemple, bloc-notes.exe foo.txt, ici %1 "toto.txt".
Les paramètres / B de la commande start le font : "Démarre une application sans ouvrir une nouvelle fenêtre D'invite de commande. La gestion CTRL + C est ignorée sauf si l'application active le traitement CTRL+C. Utilisez CTRL + BREAK pour interrompre l'application." Ce qui est exactement ce que nous voulons.
J'ai utilisé ceci pour démarrer un fichier cmd à partir de c#:
Process proc = new Process();
proc.StartInfo.WorkingDirectory = "myWorkingDirectory";
proc.StartInfo.FileName = "myFileName.cmd";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();