Jak mogę uruchomić wiersz poleceń systemu Windows w tle, bez interakcji z aktywnym użytkownikiem?
Jak mogę uruchomić wiersz poleceń systemu Windows w tle, bez interakcji z aktywnym użytkownikiem?
Odpowiedzi:
Twoje pytanie jest dość niejasne, ale na ServerFault znajduje się post, który może zawierać potrzebne informacje. Odpowiedź opisuje, jak uruchomić ukryte okno pliku wsadowego:
Zamiast tego możesz uruchomić go w trybie cichym, używając pliku skryptu systemu Windows. Metoda Run pozwala na uruchomienie skryptu w trybie niewidocznym. Utwórz
.vbs
plik 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 to. Drugi argument w tym przykładzie ustawia styl okna. 0 oznacza „ukryj okno”.
Jest trochę późno, ale natknąłem się na to pytanie, szukając odpowiedzi i znalazłem to:
START /B program
który w systemie Windows jest najbliższy poleceniu Linuksa:
program &
Z konsoli systemu pomocy:
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.
Jednym z problemów, które widziałem przy tym, jest to, że masz więcej niż jeden program piszący do okna konsoli, robi się to trochę zagmatwane i pomieszane.
Aby nie wchodził w interakcje z użytkownikiem, możesz przekierować dane wyjściowe do pliku:
START /B program > somefile.txt
start /B "" program
to zadziała ...
Podejrzewam, że masz na myśli: Uruchom coś w tle i natychmiast uzyskaj wiersz poleceń z kontynuowanym uruchomionym programem.
START "" program
Który jest uniksowym odpowiednikiem
program &
start
? Bez niego to nie działa (wykonuje tylko nową instancję polecenia), ale start
pomoc nic nie mówi na ten temat, stwierdza, że wszystkie parametry są opcjonalne (lub nie rozumiem tego).
start
działa dla mnie bez pustego parametru, ale wydaje mi się, że otrzymuję powłoki z osobną konfiguracją, gdy używam pustego parametru, ponieważ ustawienie, które zrobiłem, gdy nie miałem pustego parametru, nie jest używane, gdy go używam pusty parametr. Zastanawiam się, dlaczego używają osobnych konfiguracji?
START "" program
uruchamia dla mnie polecenie w nowym terminalu, podczas gdy program &
w Uniksie uruchamia polecenie i wypisuje dane wyjściowe na ten sam terminal.
START /MIN program
powyższy jest dość podobny do swojego uniksowego odpowiednika 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 .ps1
plik. Po włączeniu wykonywania skryptu (zobacz Włączanie skryptów w wiki tagu PowerShell ) możesz przekazać mu jeden lub dwa ciągi: nazwę pliku wykonywalnego i opcjonalnie linię argumentów. Na przykład:
.\hideproc.ps1 'sc' 'stop SomeService'
Potwierdzam, że działa to w systemie Windows 10.
W ten sposób mój wewnętrzny serwer PHP przechodzi w tło. Więc technicznie powinno to działać dla wszystkich.
start /B "" php -S 0.0.0.0:8000 &
Dzięki
Jeśli chcesz, aby program wiersza polecenia działał bez wiedzy użytkownika, zdefiniuj go jako usługę systemu Windows i będzie on działał zgodnie z harmonogramem.
schtasks
polecenia w systemie Windows XP i nowszych (ostrzeżenie: schtasks
jest skomplikowane).
Powiązana odpowiedź z 2 przykładami:
nazwij START / B „my calc” „calc.exe”
nazwij START / MIN „my mongod” „% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ mongod.exe”
call Start /MIN "c" "calc.exe"
SW_*
do CreateProcessW
urządzeń STARTUPINFO::wShowWindow
(włącznie SW_HIDE
).
Prawidłowy sposób wykonania tej czynności można znaleźć w tym linku:
Jak uruchomić zaplanowane zadanie bez wyświetlania okna poleceń
Podsumowując, musisz zaznaczyć pole wyboru „Uruchom bez względu na to, czy użytkownik jest zalogowany”. Poświadczenia użytkownika zadania należy wprowadzić po naciśnięciu przycisku „OK”.
właśnie natknąłem się na ten wątek Windows 7, używając power shell, uruchamia pliki wykonywalne w tle, dokładnie tak samo jak nazwa pliku unix &
przykład: start -NoNewWindow nazwa pliku
pomóc zacząć
NAME Start-Process
SYNTAX Start-Process [-FilePath] [[-ArgumentList]] [-Credential] [-WorkingDirectory] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-Reditandand] [-WindowStyle {Normalny | Ukryty | Zminimalizowane | Maksymalizacja}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ALIASY zaczynają się soki