Eingabeaufforderung: Skripte im Hintergrund ausführen (entspricht Linux & / bg)

23

In Linux können Sie dies tun:

$ php blah.php> some.log &

blah.phpim Hintergrund laufen . Dies ist das gleiche wie Ctrl+ zdann der bgBefehl.

Gibt es eine Entsprechung von einem / beiden für die Windows-Eingabeaufforderung?

DOOManiac
quelle
1
Ich glaube nicht, dass es das gibt, aber Sie können so viele Eingabeaufforderungen starten, wie Sie benötigen. Was versuchst du zu erreichen?
USlackr
Ich benutze>, um mich in eine Datei einzuloggen, und ich möchte nicht dazu auffordern, einfach da draußen zu sitzen. Ich möchte möglicherweise weiterhin mit demselben Eingabeaufforderungsfenster und demselben Verzeichnis arbeiten.
DOOManiac
Welche Version von Windows?
EBGreen
Windows 7 (64-Bit)
DOOManiac

Antworten:

41

Windows verfügt über eine ähnliche Funktionalität wie Linux &, um Prozesse so zu starten, dass sie Ihre Konsole nicht übernehmen. Anstelle eines Befehlszeilen-Flags wird jedoch ein Befehlspräfix verwendet.

Führen Sie einfach Ihren Befehl mit startdavor aus: C:\> start myprog.exe

Es funktioniert auch mit Befehlen, nicht nur mit ausführbaren Dateien: C:\> start dir

Dies startet ein neues Konsolenfenster und führt den darin enthaltenen Befehl aus.

Wenn beim Ausführen des Befehls kein neues Konsolenfenster angezeigt werden soll, verwenden Sie den /BSchalter wie folgt: C:\> start /B myprog.exe

Sie können verschiedene andere Optionen angeben, um die Ausführung des Befehls zu konfigurieren. Sie können sie herausfinden, indem Sie die Hilfe lesen, startindem Sie verwenden start /?.

Ben Richards
quelle
1

Dies kann eine Datei im Hintergrund über die Eingabeaufforderung oder eine Batchdatei ausführen

@Echo off
Echo Set WshShell = CreateObject("WScript.Shell")   >>%temp%\ghost.vbs
Echo WshShell.Run chr(34) ^& "MyFile" ^& Chr(34), 0 >>%temp%\ghost.vbs
Echo Set WshShell = Nothing                         >>%temp%\ghost.vbs
start %temp%\ghost.vbs
timeout /t 1 >nul
del %temp%\ghost.vbs

Ersetzen MyFileSie nun die Datei, die Sie im Hintergrund ausführen möchten.

Anthony
quelle
2
(1) Können Sie erklären, wie das funktioniert (nur ein bisschen)? (2) Grundsätzlich wird hierfür der startBefehl verwendet. Es erstellt ein Zwischenprodukt, das den Befehl des Benutzers ausführt, und startstartet dann das Zwischenprodukt mit dem Befehl. Es ist also eine Rube Goldberg-Maschine . Wie ist das besser als die andere Antwort, die eine startdirekte Verwendung vorschlägt ? (3) Die Frage zeigt die E / A-Umleitung ( > some.log). Wie würde der Benutzer die E / A-Umleitung mit dieser Antwort durchführen? Stellen Sie es in die Befehlszeile oder fügen Sie es in die WshShell.RunZeile des Skripts ein?
Scott
Antworten Sie nicht in Kommentaren. Bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten.
Scott