web-dev-qa-db-fra.com

Comment exécuter un fichier batch sans lancer une "fenêtre de commande"?

Sous Windows XP, puis-je exécuter un fichier batch (.bat ou .cmd) via un raccourci, sans "fenêtre noire"?

127
dugres

Enregistrez les éléments suivants sous wscript, par exemple, hidecmd.vbs après avoir remplacé "testing.bat" par le nom de votre fichier de commandes.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

Le deuxième paramètre de oShell.Run est intWindowStyle valeur indiquant l'apparence de la fenêtre du programme et la valeur zéro correspond à la fenêtre masquée.

La référence est ici http://msdn.Microsoft.com/en-us/library/d5fk67ky.aspx

85
Shaji

Ceci est juste une simplification de la réponse de Shaji. Vous pouvez exécuter votre script batch par le biais d’un script VBScript (.vbs) comme celui-ci:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Ceci exécutera votre fichier de commandes sans fenêtre de commande.

43
greatwolf

Pour développer les réponses "Utiliser Windows Scripting" (ce que je considère le mieux, car il est déjà intégré), voici comment procéder en utilisant un seul script d'encapsuleur et en transmettant le nom du fichier batch "réel" en tant que paramètre. Des paramètres supplémentaires seront transmis au fichier de commandes.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

Donc, par exemple enregistrer le fichier ci-dessus en tant que NoShell.vbs quelque part puis appeler:

NoShell.vbs c:\foo\my_batch_file.bat

Enfin, si vous souhaitez exécuter cette opération depuis un endroit ne comprenant pas le fichier .vbs (tel qu'un "Outils externes" dans Visual Studio), vous voudrez appeler C:\Windows\System32\wscript.exe avec le fichier vbs comme premier paramètre et votre fichier batch comme le second.

20
Toby J

Vous pouvez modifier les propriétés du raccourci pour une exécution minimisée.

Pour l'exécuter de manière totalement invisible, vous aurez besoin de quelque chose d'autre comme Windows Scripting.

9
ale

Utilisez start avec l’option '/ B'. Par exemple:

@echo off
start /B go.bat
8
zaf

Vous pouvez utiliser un script de fenêtre tel que AutoIt .

Par exemple, écrivez simplement cela dans l'éditeur de script AutoIt. C'est assez simple

Run("C:\test\batchfile.bat", "", @SW_HIDE)

Si vous voulez l'exécuter en boucle,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

Compilez-le en tant que .exe - et vous avez terminé.


De même, dans AutoHotkey :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 
6
Adrian Yeoh

Open Source GPL libre "Créer un processus caché"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials et probablement la plupart des autres analyseurs de virus/programmes malveillants traitent l'exécutable, chp.exe, comme un virus, car il cache le programme que vous spécifiez lorsque vous affichez une fenêtre ou un bouton de la barre des tâches, comme le font les virus.

Ce n'est pas un virus. Cela n'empêche pas le processus cible d'apparaître dans le gestionnaire de tâches, par exemple. Et bien sûr, le code source est inclus afin que vous puissiez voir qu'il est très petit et ne fait rien sauf exécuter le programme que vous lui donnez.

Vous n'avez même pas à croire que le chp.exe inclus a vraiment été construit à partir de cette source. Vous pouvez continuer et supprimer le fichier chp.exe inclus et compiler le vôtre à partir de la source. Tous les outils nécessaires pour le faire sont même gratuits et téléchargeables.


Vous pouvez également créer un raccourci vers le fichier .bat ou .cmd, puis cliquer avec le bouton droit de la souris sur le raccourci, Propriétés, Onglet Raccourci, Exécuter: Réduit. Ensuite, dans les tâches planifiées, utilisez directement le raccourci au lieu du fichier .bat/.cmd. Cela empêchera une fenêtre d'apparaître, mais un bouton de la barre des tâches apparaîtra quand même.

6
bkw

Utilisez Hidden Start (coûte 20 $)

Démarrage masqué - Exécuter des applications et des fichiers batch sans fenêtre de console ou invite UAC

Les applications de la console et les fichiers de commandes sont régulièrement exécutés au démarrage de Windows ou selon un calendrier. Le principal inconvénient est que chaque application ouvre une fenêtre de console qui scintille à l'écran. Hidden Start (ou Hstart) est un utilitaire léger de ligne de commande qui vous permet d'exécuter des applications console et des fichiers de commandes sans aucune fenêtre en arrière-plan, de gérer l'élévation des privilèges UAC sous Windows 7 et Vista, de lancer plusieurs commandes en parallèle ou de manière synchrone, etc. .

enter image description here

5
Kyle A

Solution simple, sans utiliser de programmes supplémentaires.

  1. Créez le fichier de commandes que vous souhaitez exécuter et testez-le.
  2. Créez un raccourci pour cela.
  3. Modifiez les propriétés du raccourci: dans l’onglet Raccourci, choisissez Exécuter minimisé. Attribuez-lui une touche de raccourci et vous avez terminé!

Bonne chance!

4
Willem