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

Wie kann ich eine Windows-Befehlszeile im Hintergrund ausführen?

Wie kann ich eine Windows-Befehlszeile im Hintergrund ausführen, ohne dass sie mit dem aktiven Benutzer interagiert?

Antworten (10)

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

Das ist ein wenig spät, aber ich bin auf diese Frage gestoßen, als ich selbst nach der Antwort suchte, und ich fand dies:

START /B program

, was unter Windows dem Linux-Befehl am nächsten kommt:

program &

Vom Konsolen-Hilfesystem aus:

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.

Ein Problem, das ich dabei gesehen habe, ist, dass man mehr als ein Programm hat, das in das Konsolenfenster schreibt, es wird ein wenig verwirrend und durcheinander gebracht.

Damit es nicht mit dem Benutzer interagiert, können Sie die Ausgabe in eine Datei umleiten:

START /B program > somefile.txt
70
70
70
2011-09-30 11:44:07 +0000

Ich vermute, Sie meinen: Lassen Sie etwas im Hintergrund laufen und holen Sie die Befehlszeile sofort zurück, wobei das gestartete Programm weiterläuft.

START "" program

Was das Unix-Äquivalent zu

program &
``` ist
40
40
40
2010-10-12 06:30:43 +0000

Ihre Frage ist ziemlich vage, aber es gibt einen Beitrag auf ServerFault , der vielleicht die Informationen enthält, die Sie benötigen. Die Antwort dort beschreibt, wie man ein Batch-Dateifenster versteckt ausführt:

Sie könnten es stattdessen still mit einer Windows-Skript-Datei ausführen. Mit der Run-Methode können Sie ein Skript im unsichtbaren Modus ausführen. Erstellen Sie eine .vbs-Datei wie diese

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

und planen Sie sie. Das zweite Argument in diesem Beispiel legt den Fensterstil fest. 0 bedeutet “das Fenster ausblenden”.

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

das obige ist mit seinem Unix-Pendant program & ziemlich ähnlich

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

Sie können dieses (kommentierte!) PowerShell-Skript verwenden:

# 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

Speichern Sie es als eine .ps1-Datei. Nachdem Sie die Skriptausführung aktiviert haben (siehe Skriptausführung aktivieren in the PowerShell tag wiki ), können Sie ihm eine oder zwei Zeichenfolgen übergeben: den Namen der ausführbaren Datei und optional die Argumentzeile. Beispiel:

.\hideproc.ps1 'sc' 'stop SomeService'

Ich bestätige, dass dies unter Windows 10 funktioniert.

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

So geht mein PHP-interner Server in den Hintergrund. Technisch sollte es also für alle funktionieren.

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

Danke

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

Eine verwandte Antwort, mit 2 Beispielen:

  1. Unten wird calc.exe geöffnet:

rufen Sie START /B “mein calc” “calc.exe”

1 auf. Manchmal ist der Vordergrund nicht erwünscht, dann läuft man minimiert wie unten:

rufen Sie start /min “n” “notepad.exe” auf

rufen Sie START /MIN “my mongod” “%ProgramFiles%\MongoDB\Server\3.4\bin\mongod.exe” auf

Hoffentlich hilft das.

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

Wenn Sie möchten, dass das Befehlszeilenprogramm ausgeführt wird, ohne dass der Benutzer überhaupt davon weiß, definieren Sie es als Windows-Dienst und es wird nach einem Zeitplan ausgeführt.

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

Die korrekte Vorgehensweise sehen Sie in diesem Link: So führen Sie einen geplanten Task aus, ohne dass ein Befehlsfenster erscheint

Zusammenfassend müssen Sie das Kontrollkästchen für ‘Ausführen, ob Benutzer angemeldet ist oder nicht’ aktivieren. Die Anmeldedaten des Task-Benutzers sollten nach Drücken von ‘Ok’ eingegeben werden.

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

stieß gerade auf diesen Thread windows 7 , unter Verwendung der Power-Shell, führt im Hintergrund ausführbare Dateien aus, genau wie Unix-Dateiname &

Beispiel: start -NoNewWindow filename

help start

NAME Start-Prozeß

SYNTAX Start-Prozeß [-FilePath] [[-ArgumentList] ] ] ] [-Referenz] [-Arbeitsverzeichnis] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError] [-RedirectStandardInput] [-RedirectStandardInput] [- RedirectStandardOutput] [-Warten] [-WindowStyle {Normal | Versteckt | Minimiert | Maximiert}] [-UseNewEnvironment] []

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

ALIASES saps start