Jak mogę wykonać wiersz poleceń Windows w tle?
Jak mogę wykonać wiersz poleceń Windows w tle, bez jego interakcji z aktywnym użytkownikiem?
Jak mogę wykonać wiersz poleceń Windows w tle, bez jego interakcji z aktywnym użytkownikiem?
Trochę się spóźniłem, ale po prostu sam natknąłem się na to pytanie szukając odpowiedzi i znalazłem to:
START /B program
co w Windows jest najbliższe komendzie Linuksa:
program &
Z systemu HELP konsoli:
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.
Jeden z problemów, który z nim widziałem to fakt, że masz więcej niż jeden program piszący do okna konsoli, robi się trochę zagmatwany i zagmatwany.
Aby nie oddziaływać na użytkownika, możesz przekierować wyjście do pliku:
START /B program > somefile.txt
Podejrzewam, że masz na myśli: Uruchomić coś w tle i natychmiast odzyskać linię poleceń przy kontynuowaniu uruchomionego programu.
START "" program
Który jest uniksowym odpowiednikiem
program &
Twoje pytanie jest dość niejasne, ale istnieje post na ServerFault , który może zawierać potrzebne informacje. Odpowiedź tam opisuje jak uruchomić okno pliku wsadowego ukryte:
Możesz uruchomić je po cichu używając zamiast tego pliku skryptowego Windows. Metoda uruchamiania pozwala na uruchomienie skryptu w trybie niewidocznym. Stwórz plik
.vbs
taki jak tenDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothing
i zaplanuj go. Drugi argument w tym przykładzie ustawia styl okna. 0 oznacza “ukryj okno”.
START /MIN program
powyższy jest bliższy swemu uniksowemu odpowiednikowi program &
Możesz użyć tego (skomentowanego!) skryptu 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
Zapisz go jako plik .ps1
. Po włączeniu wykonywania skryptu (patrz Włączanie skryptów w tagu wiki PowerShell ), możesz przekazać mu jeden lub dwa ciągi: nazwę wykonywalnego i opcjonalnie linię argumentów. Na przykład:
.\hideproc.ps1 'sc' 'stop SomeService'
Potwierdzam, że to działa na Windows 10.
W ten sposób mój wewnętrzny serwer PHP wchodzi w tło. Więc technicznie powinien działać dla wszystkich.
start /B "" php -S 0.0.0.0:8000 &
Dzięki
Powiązana odpowiedź, z 2 przykładami:
wywołanie START /B “my calc” “calc.exe”
call start /min “n” “notepad.exe”
call START /MIN “my mongod” “%ProgramFiles% \MongoDB\Server\3.4\bin "mongod.exe”
Nadzieja, że to pomoże.
Prawidłowy sposób można zobaczyć w tym linku: Jak uruchomić zaplanowane zadanie bez pojawiającego się okna poleceń
Podsumowując, należy zaznaczyć pole wyboru ‘Uruchom, czy użytkownik jest zalogowany czy nie’. Dane uwierzytelniające użytkownika zadania należy wprowadzić po naciśnięciu ‘Ok’.
Właśnie natrafiłem na ten wątek windows 7 , używając power shell, uruchamia w tle pliki wykonywalne, dokładnie takie same jak nazwa pliku uniksowego &
przykład: start -NoNewWindow filename
help start
NAME Start-Process
SYNTAX Start-Process [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardInput] [- RedirectStandardOutput] [-Wait] [-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