J'ai un script "setup" que je lance le matin qui démarre tous les programmes dont j'ai besoin. Maintenant, certains d'entre eux nécessitent une configuration supplémentaire de l'environnement, je dois donc les envelopper dans de petits scripts BAT.
Comment exécuter un tel script sous Windows XP en arrière-plan?
CALL env-script.bat
l'exécute de manière synchrone, c'est-à-dire que le script de configuration ne peut continuer qu'après la fin de la commande dans env-script.
START/B env-script.bat
exécute une autre instance de CMD.exe dans la même invite de commande, en la laissant dans un état vraiment désordonné (je vois la sortie du CMD.exe imbriqué, le clavier est mort pendant un certain temps, le script n'est pas exécuté).
START/B CMD env-script.bat
donne le même résultat. Aucun des drapeaux de CMD ne semble correspondre à ma facture.
la source
Deux ans, mais par souci d'exhaustivité ...
Approche standard en ligne: (c'est-à-dire le comportement que vous obtiendriez lors de l'utilisation
&
sous Linux)Remarques: 1.
CALL
est associé au fichier .bat parce que c'est là où il va habituellement .. (c'est-à-dire qu'il ne s'agit que d'une extension duCMD /C CALL "foo.bat"
formulaire pour le rendre asynchrone. Habituellement, il est nécessaire d'obtenir correctement les codes de sortie, mais ce n'est pas un problème ici.); 2. Les guillemets doubles autour du fichier .bat ne sont nécessaires que si le nom contient des espaces. (Le nom pourrait être un chemin, auquel cas il y a plus de chances que cela.).Si vous ne voulez pas la sortie:
Si vous voulez que le batte soit exécuté sur une console indépendante: (c'est-à-dire une autre fenêtre)
Si vous voulez que l'autre fenêtre traîne par la suite:
Remarque: Il s'agit en fait d'une forme médiocre, sauf si vous avez des utilisateurs qui souhaitent spécifiquement utiliser la fenêtre ouverte comme une console normale. Si vous voulez juste que la fenêtre reste pour voir la sortie, il vaut mieux mettre un
PAUSE
à la fin du fichier chauve-souris. Ou même encore, ajoutez^& PAUSE
après la ligne de commande:la source
&
est un opérateur "et alors" (terminologie?). (par exemplecmd1 & cmd2
signifie faire "cmd1" puis "cmd2". Contrairement à l'&&
opérateur, l'exécution de "cmd2" ne dépend pas de la sortie réussie de "cmd1".) L'^
échappe le&
pour qu'il entre dans les arguments de CMD au lieu d'être consommé et exécuté par la même console qui a exécuté START.start
etcmd
ne donnaient pas toutes les fonctionnalités que je recherchais. Votre réponse le cloue.START /B "" CMD /C "foo.bat" [args [...]] ^>nul 2^>^&1
START /B "" CMD /C PING 127.0.0.1 >NUL
semble fonctionner malgré tout et rien n'est produit. (Probablement parce qu'ilCMD
hériteSTART
des poignées d'E / S.) Je suppose que la différence est si vous voulez conserverSTART
la sortie (d'erreur) intacte, ce qui est probablement une bonne idée.CALL
est juste là parce que j'ai senti que c'était une bonne pratique à garder. (c'est-à-dire que ne pas utiliserCALL
pour les appels de chauve-souris synchrones entraînera des codes de sortie imprévisibles, donc jeCALL
Puisque START est le seul moyen d'exécuter quelque chose en arrière-plan à partir d'un script CMD, je vous recommande de continuer à l'utiliser. Au lieu du modificateur / B, essayez / MIN pour que la fenêtre nouvellement créée ne vous dérange pas. En outre, vous pouvez définir la priorité sur quelque chose de plus bas avec / LOW ou / BELOWNORMAL, ce qui devrait améliorer la réactivité de votre système.
la source
Autre que terme de premier plan / d'arrière-plan. Une autre façon de masquer la fenêtre en cours est via vbscript, si elle est toujours disponible dans votre système.
nommez-le sth.vbs et appelez-le de bat, mettez-le dans une tâche prévue, etc. Personnellement, je désactiverai les vbs sans hâte sur n'importe quel système Windows que je gère :)
la source
Créez une nouvelle application Windows C # et appelez cette méthode à partir de main:
la source
Cela fonctionne sur mon installation Windows XP Home, à la manière Unix:
la source
En fait, c'est assez facile avec cette option à la fin:
la source
start
n'a pas d'-WindowStyle
option.C:` instead of
C: \ Windows`) suggère qu'il a trouvé un outil quelque part sur Internet et copié sur son disque dur.