Question

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

Était-ce utile?

La solution

Dans la question StackOverflow, j'ai proposé un moyen de exécuter un fichier de commandes en arrière-plan ( aucune fenêtre DOS affichée ).

Cela devrait répondre à votre question.

La voici:

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 le Méthode Windows 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 souhaitez lancer un autre script "en arrière-plan", un simple / b (comme indiqué dans la section 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 qui partage la fenêtre de votre premier.

Autres conseils

Inclure la phrase

@echo off

tout en haut de votre script chauve-souris.

Utiliser le convertisseur BAT / EXE avancé à 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 son logiciel gratuit

.

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 jeu de commandes; la fenêtre DOS ne cesse de s'afficher, ici est votre solution. 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 et le chemin du fichier .BAT en conséquence.

Utilisez Bat To Exe Converter pour le faire

http://download.cnet.com/ Bat-To-Exe-Converter / 3000-2069_4-10555897.html
(choisissez 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.

Fait!

Essayez SilentCMD . Il s’agit d’un petit programme gratuit qui exécute un fichier de commandes sans afficher la fenêtre d’invite de commande.

Si je veux exécuter une invite de commande 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 , 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"

Je suis assez confiant d’aimer cette méthode, la meilleure. 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 vraiment fonctionné pour moi. Les commentaires sont les bienvenus:)

Je suis RunApp créé à cette fin et utilisé dans mon environnement de production, espérons que cela aide.

La configuration comme ci-dessous:

fichier: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

Et lancez runapp.exe à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top