Cette question a déjà une réponse ici:
Sous Windows XP, puis-je exécuter un fichier de traitement par lots (.bat ou .cmd), via un raccourci, sans "fenêtre noire"?
Cette question a déjà une réponse ici:
Sous Windows XP, puis-je exécuter un fichier de traitement par lots (.bat ou .cmd), via un raccourci, sans "fenêtre noire"?
Réponses:
Enregistrez les éléments suivants sous wscript, par exemple, hidecmd.vbs après avoir remplacé "testing.bat" par le nom de votre fichier de traitement par lots.
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
.bat
fichier en tant qu'administrateur à l'aide de cette méthode?
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.
.bat
fichier en tant qu'administrateur en utilisant cette méthode?
Pour développer les réponses "Utiliser les scripts Windows" (ce que je considère le mieux, car elles sont déjà intégrées), 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
Par exemple, sauvegardez le fichier ci-dessus NoShell.vbs
quelque part puis appelez:
NoShell.vbs c:\foo\my_batch_file.bat
Enfin, si vous souhaitez exécuter cette opération 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 batch comme le second.
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
.
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
. Peu importe ce que je cherche pour le chemin - des guillemets doubles autour de tout,% 20 à la place de l'espace, ou une combinaison de ces deux choses, rien ne fonctionne. Je reçois un message d'erreur m'indiquant que le fichier est introuvable ou que rien ne se produit. Cela est-il dû à une erreur de l'utilisateur, à 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 contenant des espaces?
Utilisez start avec l'option '/ B'. Par exemple:
@echo off
start /B go.bat
start /b
exécutera simplement le programme dans la console actuellement allouée au lieu d'en créer un nouveau. De toute façon, vous en aurez un nouveau puisque le lot doit fonctionner avec cmd (ce qui [surprise] ouvre une console).
SYSTEM
en C / C ++).
cmd /c foo.cmd
. Il n'y a absolument aucun besoin d'utiliser start
dans ces scénarios, et, je dirais que cela system
ne devrait pas être utilisé en faveur de CreateProcess
. En lançant un fichier de commandes, vous êtes déjà dépendant d'une plate-forme. Vous pouvez également utiliser les meilleurs outils pour le travail.
cmd /c
auparavant. La commande cmd est ce dont j'avais besoin dans mon cas, mais toutes les réponses stackexchange que j'ai trouvées jusqu'à présent, à propos d'un fichier de commandes exécutant un autre fichier de commandes, ont les meilleures réponses pour commencer ...
start /b go.bat
n'allouera pas une nouvelle console (c'est-à-dire une instance de conhost.exe - ou un thread dans csrss.exe avant Windows 7). Toutefois, cela va créer un désordre, car le script de traitement par lots est exécuté avec une nouvelle instance de cmd.exe qui est attachée à la même console . Les deux instances du shell entreront 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
) attendre la deuxième instance, ce qui revient à utiliser cmd /c
si vous utilisez system
. Aussi, si vous appelez CreateProcess
, lancez go.bat
directement. Il n'y a pas besoin de cmd /c
.
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 dissimule 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 besoin de 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.
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
Utilisez un 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 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. .
Solution simple, sans utiliser de programmes supplémentaires.
Bonne chance!