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?
Come posso eseguire una riga di comando di Windows in background, senza che interagisca con l'utente attivo?
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
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
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 questoDim 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”.
START /MIN program
quello di cui sopra è molto più vicino al suo omologo Unix program &
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.
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
Una risposta correlata, con 2 esempi:
chiamata START / “my calc” “calc.exe”
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.
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’.
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