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

Jak mogę wykonać wiersz poleceń Windows w tle?

Jak mogę wykonać wiersz poleceń Windows w tle, bez jego interakcji z aktywnym użytkownikiem?

Odpowiedzi (10)

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

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
70
70
70
2011-09-30 11:44:07 +0000

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 &
40
40
40
2010-10-12 06:30:43 +0000

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 ten

Dim 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”.

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

powyższy jest bliższy swemu uniksowemu odpowiednikowi program &

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

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.

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

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

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

Powiązana odpowiedź, z 2 przykładami:

  1. Poniżej otwiera calc.exe:

wywołanie START /B “my calc” “calc.exe”

  1. Czasami pierwszy plan nie jest pożądany, wtedy uruchamiasz zminimalizowany jak poniżej:

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

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

Nadzieja, że to pomoże.

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

Jeśli chcesz, aby program z wiersza poleceń działał bez wiedzy użytkownika, zdefiniuj go jako usługę Windows i będzie działał zgodnie z harmonogramem.

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

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’.

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

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