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

Come posso eseguire una riga di comando di Windows in background?

Come posso eseguire una riga di comando di Windows in background, senza che interagisca con l'utente attivo?

Risposte (10)

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

Questo è un po’ tardi, ma mi sono imbattuto in questa domanda mentre cercavo la risposta da solo e ho trovato questo:

START /B program
``` ```
program &

che, su Windows, è il più vicino al comando Linux:

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.
``` ```
START /B program > somefile.txt

Dal sistema HELP della console:

&001 &001

Un problema che ho visto con esso è che si ha più di un programma che scrive sulla finestra della console, diventa un po’ confuso e confuso.

Per non farlo interagire con l'utente, è possibile reindirizzare l'output su un file:

&001

70
70
70
2011-09-30 11:44:07 +0000

Sospetto che tu voglia dire: Eseguire qualcosa in background e recuperare immediatamente la linea di comando con il programma lanciato che continua.

START "" program
``` ```
program &

Che è l'equivalente Unix di

&001

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

La sua domanda è piuttosto vaga, ma c'è un post su ServerFault che potrebbe contenere le informazioni di cui ha bisogno. La risposta descrive come eseguire una finestra di file batch nascosta:

Potreste eseguirla in silenzio usando un file Script di Windows al suo posto. Il metodo Run consente di eseguire uno script in modalità invisibile. Creare un file .vbs come questo

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

e programmarlo. Il secondo argomento di questo esempio imposta lo stile della finestra. 0 significa “nascondere la finestra”.

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

quello di cui sopra è molto più vicino al suo omologo Unix program &

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

Potete usare questo (commentato!) script PowerShell:

# 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

Salvatelo come file .ps1. Dopo aver abilitato l'esecuzione dello script (vedere Abilitazione degli script in il tag PowerShell wiki ), si possono passare una o due stringhe: il nome dell'eseguibile e, opzionalmente, la riga degli argomenti. Per esempio:

.\hideproc.ps1 'sc' 'stop SomeService'
``` &001 


Confermo che questo funziona su Windows 10.
3
3
3
2018-07-09 04:30:36 +0000

Ecco come il mio server interno PHP va in background. Quindi tecnicamente dovrebbe funzionare per tutti.

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

Grazie

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

Una risposta correlata, con 2 esempi:

  1. Di seguito si apre calc.exe:

chiamata START / “my calc” “calc.exe”

  1. A volte il primo piano non è desiderabile, quindi si esegue come descritto di seguito:

avvia la chiamata /min “n” “notepad.exe”

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

Spero che questo aiuti.

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

Se si desidera che il programma a riga di comando venga eseguito senza che l'utente ne sia a conoscenza, definirlo come un servizio di Windows e verrà eseguito secondo un programma.

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

Si può vedere il modo corretto per farlo in questo link: How to Run a Scheduled Task Without a Command Window Appearing

Riassumendo, si deve selezionare la casella ‘Esegui se l'utente è connesso o meno’. Le credenziali dell'utente dell'attività devono essere inserite dopo aver premuto ‘Ok’.

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

appena trovato in questa finestra di thread 7 , usando il power shell, esegue gli eseguibili in background, esattamente come unix nome file & &

esempio: start -NoNewWindow nome file

help start

NAME Start-Process

SYNTAX Start-Process [-FilePath] [[-ArgumentList] ] ]. [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardInput] [- RedirectStandardOutput] [-Aspetta] [-StileFinestraStile {Normale | Nascosto | Nascosto | Minimizzato | Massimizzato}] [-UsoNewEnvironment] []

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

ALIASES linfa inizio