web-dev-qa-db-fra.com

Exécution d’un CMD ou d’une BAT en mode silencieux

Comment puis-je exécuter un fichier CMD ou .bat en mode silencieux? Je cherche à empêcher que l'interface CMD soit montrée à l'utilisateur.

39
Tammen Bruccoleri

J'ai proposé à StackOverflow question un moyen de exécuter un fichier batch en arrière-plan (aucune fenêtre DOS affichée)

Cela devrait répondre à votre question.

C'est ici:


Depuis votre premier script, appelez votre deuxième script avec la ligne suivante:

wscript.exe invis.vbs run.bat %*

En fait, vous appelez un script vbs avec:

  • le [chemin]\nom de votre script
  • tous les autres arguments nécessaires à votre script (%*)

Ensuite, invis.vbs appellera votre script avec la méthode Script Script Host Run () , qui prend:

  • intWindowStyle: 0 signifie "fenêtres invisibles"
  • bWaitOnReturn: false signifie que votre premier script n'a pas besoin d'attendre la fin de votre second script

Voir la question pour le script complet invis.vbs:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
                                                         ^
                             means "invisible window" ---| 

Mise à jour après les commentaires de Tammen:

Si vous êtes dans une session DOS et que vous voulez lancer un autre script "en arrière-plan", un simple /b (comme détaillé dans la même question susmentionnée ) peut suffire:

Vous pouvez utiliser start /b second.bat pour lancer un deuxième fichier batch de manière asynchrone à partir de votre premier fichier partageant la fenêtre de votre premier.

36
VonC

Inclure la phrase

@echo off

tout en haut de votre script chauve-souris.

38
Frederick The Fool

Utilisez Advanced BAT to EXE Converter à partir de http://www.battoexeconverter.com

Cela vous permettra d’incorporer tous les fichiers binaires supplémentaires avec votre fichier de commandes dans un fichier EXE autonome entièrement silencieux et ses logiciels gratuits.

8
xfgjhxdfg

Utilisez Bat To Exe Converter pour le faire

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(Choisir Lien de téléchargement direct)

1 - Ouvrez Bat to Exe Converter, sélectionnez votre fichier Bat.
2 - Dans le menu Options, sélectionnez "Application invisible", puis appuyez sur le bouton Compiler. 

Terminé!

6
rafael

Je pense que c'est la solution la plus simple et la plus courte pour exécuter un fichier de commandes sans ouvrir la fenêtre DOS. Cela peut être très gênant lorsque vous souhaitez planifier l'exécution périodique d'un ensemble de commandes. La fenêtre DOS ne cesse de s'afficher. . Utilisez un script VBS pour appeler le fichier de commandes ...

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 du fichier .BAT et son chemin en conséquence.

6
indago

Essayez SilentCMD. Ceci est un petit programme gratuit qui exécute un fichier de commandes sans afficher la commande Invite window.

5
Stephan Brenner

Si je veux exécuter la commande promt en mode silencieux, il existe une simple commande vbs:

Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

si je voulais ouvrir une url dans cmd en silence , alors voici un code:

Set WshShell = WScript.CreateObject("WScript.Shell") 
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000 
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
3
saele

Je suis assez confiant que j'aime cette méthode le meilleur. Copiez et collez le code ci-dessous dans un fichier .vbs. À partir de là, vous appelez le fichier de commandes ... alors assurez-vous de modifier la dernière ligne pour spécifier le chemin et le nom du fichier de commandes (qui devrait contenir le fichier que vous souhaitez lancer ou effectuer les actions que vous souhaitez effectuer).

Const HIDDEN_WINDOW = 12 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

Set objConfig = objStartup.SpawnInstance_ 
objConfig.ShowWindow = HIDDEN_WINDOW 
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)

Cela a définitivement fonctionné pour moi. Les commentaires sont les bienvenus :)

2
nino

Je suis créé RunApp pour faire un tel travail et l'utiliser également dans mon environnement de production, j'espère que cela aidera.

La config comme ci-dessous:

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

Et lancez runapp.exe à la place.

0
James Yang