Question Comment exécuter un fichier de commandes sans lancer une "fenêtre de commande"? [dupliquer]


Cette question a déjà une réponse ici:

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


121
2018-05-11 17:31


origine


Demandez-vous si vous pouvez empêcher la fenêtre de commande de s'afficher lorsque vous exécutez un fichier bat? - Eric
Oui, vous pouvez facilement modifier la couleur par défaut de la fenêtre de sortie en utilisant les propriétés d'un raccourci cmd.exe. (oui c'est une blague ...) - Toby J


Réponses:


Enregistrez les éléments suivants sous la forme 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 La valeur indiquant l'apparence de la fenêtre du programme et la valeur zéro est pour la fenêtre masquée.

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


83
2018-05-11 19:55



La troisième ligne serait-elle: strArgs = "cmd / c FILEPATH \ testing.bat"? - Dan Z
Une façon de courir la chauve-souris en mode élevé tout en restant invisible? - Laurens Swart
Comment courir .bat fichier en tant qu'administrateur en utilisant cette méthode? - Mehdi Dehghani


Ceci est juste une simplification de la réponse de Shaji. Vous pouvez exécuter votre script batch via un VBScript (.vbs) script comme ceci:

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

Cela exécutera votre fichier de commandes sans aucune fenêtre de commande affichée.


41
2018-02-15 09:52



Comment courir .bat fichier en tant qu'administrateur en utilisant cette méthode? - Mehdi Dehghani


Juste pour développer les réponses "Utiliser Windows Scripting" (que je considère préférable car il est déjà intégré), voici comment le faire en utilisant un seul script d'encapsulation et en transmettant le nom du fichier "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 alors appelez:

NoShell.vbs c:\foo\my_batch_file.bat

Enfin, si vous cherchez à exécuter cela depuis un endroit qui ne comprend 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 de commandes comme second.


18
2018-01-10 17:50



Pour ceux qui n'aiment pas l'idée et le concept d'avoir à créer un nouveau fichier vbs pour chaque nouveau fichier de chauve-souris que l'on crée, comme on doit utiliser l'une des deux premières réponses, c'est la solution parfaite. Au lieu de plusieurs fichiers vbs, vous aurez plusieurs raccourcis. Pour chaque nouveau fichier bat, créez un raccourci du fichier vbs, cliquez dessus avec le bouton droit, choisissez Propriétés> Onglet Raccourcis, et dans la zone Cible, entrez le chemin du fichier bat après le chemin déjà présent, comme indiqué ci-dessus ou similaire ceci si le raccourci n'est pas au même endroit que le fichier vbs: "C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat. - Rolo
Si le chemin de fichier du fichier bat a un espace, comment peut-il être appelé via un raccourci vers le fichier vbs? Par exemple: "C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat. Peu importe ce que je tente pour le chemin - les guillemets doubles autour de tout,% 20 à la place de l'espace, ou une combinaison des deux, rien ne fonctionne. Je reçois un message d'erreur indiquant que le fichier est introuvable ou que rien ne se produit. Est-ce dû à une erreur d'utilisateur de ma part, à une limitation de Windows avec le champ Cible pour les raccourcis ou à un problème avec le script vbs dans lequel il ne gère pas correctement les chemins de fichiers avec des espaces? - Rolo
@Rolo J'ai mis à jour le script pour que les paramètres entrants contiennent des espaces. Donc, vous voudrez envelopper le chemin d'accès au fichier de commandes avec des guillemets lorsque vous l'appelez, il sera alors considéré comme un seul argument et sera ré-enroulé avant d'être appelé. - Toby J


Vous pouvez modifier les propriétés du raccourci pour exécuter minimisé.

Pour l'exécuter complètement, vous aurez besoin de quelque chose comme Windows Scripting.


9
2018-05-11 19:50



Votre première suggestion est la façon dont je l'ai toujours fait. - martineau


Utilisation début avec l'option '/ B'. Par exemple:

@echo off
start /B go.bat

8
2018-05-11 17:36



start /bva simplement exécuter le programme dans la console actuellement allouée au lieu d'en créer un nouveau. Vous en obtiendrez un nouveau de toute façon puisque le lot doit fonctionner avec cmd (qui, à son tour [surprise], ouvre une console). - Joey
@Joey yes, mais c'est très utile pour lancer des fichiers de commandes à partir d'autres applications via l'exécution de shell (comme SYSTEM en C / C ++). - Tomáš Zato
@ TomášZato: Vous pouvez simplement appeler le fichier batch directement dans ce cas, ou, si ce que vous utilisez pour générer un processus ne crée pas d'abord un shell, utilisez cmd /c foo.cmd. Il n'y a absolument pas besoin d'utiliser start dans ces scénarios, et je dirais que system ne devrait pas être utilisé en faveur de CreateProcess. En lançant un fichier de commandes, vous dépendez déjà d'une plate-forme, vous pouvez également utiliser les meilleurs outils pour le travail. - Joey
@Joey Merci beaucoup, jamais entendu parler de cmd /c avant. La commande cmd est ce dont j'avais besoin dans mon cas, mais toutes les réponses au stackexchange que j'ai trouvées jusqu'à présent, concernant un fichier de commandes exécutant un autre fichier de commandes, ont les meilleures réponses à utiliser au démarrage ... - T_D
start /b go.bat  ne sera pas allouer une nouvelle console (c'est-à-dire une instance de conhost.exe - ou un thread dans csrss.exe avant Windows 7). Cependant, le script batch sera exécuté avec une nouvelle instance de cmd.exe attachée au fichier. même console. Les deux instances du shell seront en compétition pour lire les entrées de la console, généralement en alternance. Il faut /w (par exemple. start /b /w go.bat) afin d'attendre la deuxième instance, ce qui est similaire à l'utilisation cmd /c si utiliser system. Aussi, si vous appelez CreateProcess, courir go.bat directement. Il n'y a pas besoin de cmd /c. - eryksun


Free open source GPL "Créer un processus caché"

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

Microsoft Security Essentials, et probablement la plupart des autres scanneurs de virus / programmes malveillants, traiteront l’exécutable chp.exe comme un virus, car ils masquent les programmes que vous spécifiez pour afficher une fenêtre ou un bouton de barre de tâches, comme le font les virus.

Ce n'est pas un virus. Il ne masque pas le processus cible d’apparaître dans le gestionnaire de tâches par exemple. Et bien sûr, le code source est inclus, vous pouvez donc voir qu'il est très petit et ne fait rien d'autre que d'exécuter le programme que vous lui donnez.

Vous n'avez même pas à faire confiance que le chp.exe inclus a été réellement construit à partir de cette source. Vous pouvez aller de l'avant et supprimer le fichier chp.exe inclus et compiler le vôtre à partir de la source, et 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 sur le raccourci, Propriétés, onglet Raccourci, Exécuter: Minimisé. Ensuite, dans les tâches planifiées, utilisez directement le raccourci au lieu du fichier .bat / .cmd. Cela empêchera l'apparition d'une fenêtre, mais un bouton de la barre des tâches apparaîtra toujours.


6
2017-10-22 21:17





Utilisation Départ caché  (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 console et les fichiers de commandes sont régulièrement exécutés au démarrage de Windows ou dans un calendrier. Le principal inconvénient est que chaque application ouvre une fenêtre de console qui clignote à l'écran. Hidden Start (ou Hstart) est un utilitaire de ligne de commande léger qui vous permet d'exécuter des applications de console et des fichiers de commandes sans aucune fenêtre en arrière-plan, de gérer l'élévation de privilèges UAC sous Windows 7 et Vista. .

enter image description here


5
2018-05-12 16:03



Ceci est une application très bien conçue et utile. - Guru Josh


Vous pouvez utiliser des scripts de fenêtre tels que AutoIt.

Par exemple, écrivez simplement ceci 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 

5
2018-05-29 03:48





Solution simple, sans utiliser de programme supplémentaire.

  1. Créez le fichier de commandes que vous souhaitez exécuter et testez-le.
  2. Crée un raccourci pour ça!
  3. Modifiez les propriétés du raccourci: dans l'onglet Raccourci, choisissez Exécuter minimisé. Assigner une touche de raccourci à elle et votre fait!

Bonne chance!


4
2017-10-27 08:23



Ce n'est pas une solution au problème du PO. Il y a une différence entre Minimiser et Cache - nixda
Si vous changez de raccourci pour utiliser l'icône de droite, le splash minimisé dans la barre des tâches est en fait un bon rappel. - Whoever
C'est une solution agréable et propre pour mon problème! Je vous remercie! - dmitry_romanov
minimiser ... hehe. - gumuruh