2010-10-12 06:09:11 +0000 2010-10-12 06:09:11 +0000
174
174

Comment puis-je exécuter une ligne de commande Windows en arrière-plan ?

Comment puis-je exécuter une ligne de commande Windows en arrière-plan, sans qu'elle n'interagisse avec l'utilisateur actif ?

Réponses (10)

257
257
257
2013-05-03 14:28:39 +0000

C'est un peu tard mais je suis tombé sur cette question en cherchant moi-même la réponse et j'ai trouvé ceci :

START /B program

qui, sous Windows, est la plus proche de la commande Linux :

program &

Depuis le système d'aide de la console :

C:\>HELP START

Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title" Title to display in window title bar.
    path Starting directory.
    B Start application without creating a new window. The
                application has ^C handling ignored. Unless the application
                enables ^C processing, ^Break is the only way to interrupt
                the application.

Un problème que j'ai vu avec cela est que vous avez plus d'un programme qui écrit dans la fenêtre de la console, cela devient un peu confus et confus. Pour qu'il n'interagisse pas avec l'utilisateur, vous pouvez rediriger la sortie vers un fichier :

START /B program > somefile.txt
70
70
70
2011-09-30 11:44:07 +0000

Je suppose que vous voulez dire : Exécutez quelque chose en arrière-plan et récupérez immédiatement la ligne de commande avec le programme lancé en continu.

START "" program

Qui est l'équivalent Unix de

program &
40
40
40
2010-10-12 06:30:43 +0000

Votre question est assez vague, mais il existe un post sur ServerFault qui peut contenir les informations dont vous avez besoin. La réponse y décrit comment exécuter une fenêtre de fichier batch cachée :

Vous pourriez l'exécuter en silence en utilisant un fichier de script Windows à la place. La méthode d'exécution vous permet d'exécuter un script en mode invisible. Créez un fichier .vbs comme celui-ci :

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

et planifiez-le. Le deuxième argument de cet exemple définit le style de la fenêtre. 0 signifie “cacher la fenêtre”.

15
15
15
2012-09-13 06:55:32 +0000
START /MIN program

le précédent est assez proche de son homologue Unix program &

7
7
7
2016-09-01 22:20:49 +0000

Vous pouvez utiliser ce script PowerShell (commenté !):

# Create the .NET objects
$psi = New-Object System.Diagnostics.ProcessStartInfo
$newproc = New-Object System.Diagnostics.Process
# Basic stuff, process name and arguments
$psi.FileName = $args[0]
$psi.Arguments = $args[1]
# Hide any window it might try to create
$psi.CreateNoWindow = $true
$psi.WindowStyle = 'Hidden'
# Set up and start the process
$newproc.StartInfo = $psi
$newproc.Start()
# Return the process object to the caller
$newproc

Enregistrez-le sous forme de fichier .ps1. Après avoir activé l'exécution du script (voir Activation des scripts dans the PowerShell tag wiki ), vous pouvez lui passer une ou deux chaînes de caractères : le nom de l'exécutable et éventuellement la ligne d'arguments. Par exemple :

.\hideproc.ps1 'sc' 'stop SomeService'

Je confirme que cela fonctionne sous Windows 10.

3
3
3
2018-07-09 04:30:36 +0000

C'est ainsi que mon serveur interne PHP passe en arrière-plan. Donc techniquement, il devrait fonctionner pour tous.

start /B "" php -S 0.0.0.0:8000 &

Merci

2
2
2
2017-08-09 05:08:06 +0000

Une réponse connexe, avec 2 exemples :

  1. Ci-dessous s'ouvre calc.exe :

call START /B “my calc” “calc.exe”

  1. Parfois, le premier plan n'est pas souhaité, alors vous exécutez minimisé comme ci-dessous :

call start /min “n” “notepad.exe”

call START /MIN “my mongod” “%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe”

Espérons que cela vous aidera.

1
1
1
2011-09-30 14:00:42 +0000

Si vous voulez que le programme en ligne de commande s'exécute sans que l'utilisateur le sache, définissez-le comme un service Windows et il fonctionnera selon un calendrier.

-1
-1
-1
2015-09-03 14:10:25 +0000

Vous pouvez voir la bonne façon de procéder dans ce lien : Comment exécuter une tâche planifiée sans qu'une fenêtre de commande apparaisse

En résumé, vous devez cocher la case “Exécuter si l'utilisateur est connecté ou non”. Les informations d'identification de l'utilisateur de la tâche doivent être saisies après avoir appuyé sur “Ok”.

-2
-2
-2
2015-07-13 23:29:17 +0000

vient de tomber sur ce fil de discussion windows 7, utilisant le power shell, qui exécute des exécutables en arrière-plan, exactement comme le nom de fichier unix

exemple : start -NoNewWindow nom de fichier

aide au démarrage

NAME Processus de démarrage

SYNTAX Processus de démarrage [-FilePath] [[-ArgumentList] ] [-Attention] [-Répertoire de travail] [-Charger le profil de l'utilisateur] [-Pas de nouvelle fenêtre] [-PassThru] [-Erreur standard de redirection] [-Entrée standard de redirection] [- RedirectStandardOutput] [-Attendez] [-WindowStyle {Normal | Hidden | Minimized | Maximized}] [-UseNewEnvironment] []

Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]

ALIASES saps start