Invite de commandes: exécuter des scripts en arrière-plan (équivalent de Linux et / bg)


23

Sous Linux, vous pouvez faire ceci:

$ php blah.php> certains.log &

pour fonctionner blah.phpen arrière-plan. C'est la même chose que Ctrl+ zpuis la bgcommande.

Existe-t-il un équivalent de / des deux pour l'invite de commande Windows?


1
Je ne le pense pas, mais vous pouvez lancer autant d'invites de commande que vous le souhaitez. Qu'est-ce que vous essayez d'accomplir?
uSlackr

J'utilise> pour me connecter à un fichier, et je ne veux pas inviter à rester assis là. Je peux vouloir continuer à travailler sur la même fenêtre d'invite avec le même répertoire.
DOOManiac

Quelle version de Windows?
EBGreen

Windows 7 (64 bits)
DOOManiac

Réponses:


41

Windows a une fonctionnalité similaire à celle de Linux &, pour lancer des processus tels qu'ils ne prennent pas le contrôle de votre console. Au lieu d'un indicateur de ligne de commande, c'est un préfixe de commande.

Exécutez simplement votre commande avec starten face d'elle, comme telle: C:\> start myprog.exe

Il fonctionne également avec des commandes, pas seulement avec des exécutables: C:\> start dir

Cela ouvrira une nouvelle fenêtre de console et exécutera la commande à l'intérieur.

Si vous ne voulez pas qu'une nouvelle fenêtre de console apparaisse lors de l'exécution de la commande, utilisez le /Bcommutateur, comme ceci: C:\> start /B myprog.exe

Il existe plusieurs autres options que vous pouvez spécifier pour configurer la façon d'exécuter la commande. Vous pouvez les comprendre en lisant l'aide pour starten utilisant start /?.


1

Cela peut exécuter un fichier en arrière-plan à partir de l'invite de commande ou un fichier de commandes

@Echo off
Echo Set WshShell = CreateObject("WScript.Shell")   >>%temp%\ghost.vbs
Echo WshShell.Run chr(34) ^& "MyFile" ^& Chr(34), 0 >>%temp%\ghost.vbs
Echo Set WshShell = Nothing                         >>%temp%\ghost.vbs
start %temp%\ghost.vbs
timeout /t 1 >nul
del %temp%\ghost.vbs

Remplacez maintenant MyFilepar le fichier que vous souhaitez exécuter en arrière-plan.


2
(1) Pouvez-vous expliquer comment cela fonctionne (juste un peu)? (2) Fondamentalement, cela utilise la startcommande. Il crée une chose intermédiaire qui exécute la commande de l'utilisateur, puis utilise la startcommande pour démarrer la chose intermédiaire. C'est donc une machine Rube Goldberg . Comment est-ce mieux que l'autre réponse, qui suggère d'utiliser startdirectement? (3) La question montre la redirection d'E / S ( > some.log). Comment l'utilisateur ferait-il la redirection d'E / S avec cette réponse? Mettez-le sur la ligne de commande, ou intégrez-le à la WshShell.Runligne du script?
Scott

Ne répondez pas dans les commentaires; modifiez votre réponse pour la rendre plus claire et plus complète.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.