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.

50
demandé sur VonC 2009-02-03 17:47:34

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"
39
répondu cg. 2016-06-02 10:51:23

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.

13
répondu jlenfers 2013-11-18 18:45:00

Essayez ceci:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
exit
9
répondu QAZ 2009-02-03 17:35:08

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"
6
répondu mzuther 2009-08-24 10:32:18

Bon conseil. Il fonctionne avec les fichiers batch qui exécutent un programme java aussi.

start javaw -classpath "%CP%" main.Main
6
répondu Josy 2013-03-24 03:16:57

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.

3
répondu Oskar Duveborn 2009-02-03 14:51:04

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.

3
répondu Paul Barnett 2018-08-20 07:00:03

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".

2
répondu Vinayak Gadkari 2011-07-30 11:20:53

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é.

2
répondu jamesdlin 2016-06-02 10:52:35

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é.

1
répondu Joe 2010-11-29 20:39:41

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
1
répondu NorthCat 2014-09-15 07:54:55

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.

1
répondu user7669241 2017-03-06 23:19:19

, 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.

1
répondu Egoadsr 2017-11-15 11:14:34

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();
1
répondu Mike 2018-05-02 18:20:40