Kann ich ein GUI-Programm im Hintergrund über die Windows-Befehlszeile ausführen?

12

In Bash kann ich zum Beispiel Folgendes tun:

emacs foo.txt &

Gibt es ein Äquivalent in Windows? Ich kann anscheinend keinen Weg finden, dies mit der Windows-Version von Emacs zu tun.

Jason Baker
quelle

Antworten:

20

Der Befehl zum Starten von Programmen über die Befehlszeile in Windows lautet "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]
      [/AFFINITY <hex affinity>] [/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
    I           The new environment will be the original environment passed
                to the cmd.exe and not the current environment.
    MIN         Start window minimized
    MAX         Start window maximized
    SEPARATE    Start 16-bit Windows program in separate memory space
    SHARED      Start 16-bit Windows program in shared memory space
    LOW         Start application in the IDLE priority class
    NORMAL      Start application in the NORMAL priority class
    HIGH        Start application in the HIGH priority class
    REALTIME    Start application in the REALTIME priority class
    ABOVENORMAL Start application in the ABOVENORMAL priority class
    BELOWNORMAL Start application in the BELOWNORMAL priority class
    AFFINITY    The new application will have the specified processor
                affinity mask, expressed as a hexadecimal number.
    WAIT        Start application and wait for it to terminate

Sie können die Option MIN verwenden, um ein minimiertes Programm zu starten

Kevin Kuphal
quelle
1
Zu Ihrer Information, der richtige Befehl in diesem Fall ist "start / B emacs foo.txt". Ansonsten läuft es in einem eigenen Konsolenfenster, was akzeptabel, aber nervig ist. :-)
Jason Baker
3

Ich weiß nicht, ob es ausreichen wird, aber versuchen Sie es

start emacs foo.txt

Es wird nicht in den Hintergrund verschoben, sondern ein separates cmd.exe-Fenster für den Befehl gestartet.

kubanczyk
quelle
2

HaHa, es ist mir gelungen, den erhabenen Text3 als Server für die Abschriftenvorschau zu verwenden. Nachdem ich das Fenster des erhabenen Texts geschlossen habe, werde ich nicht mehr funktionieren. Ich würde viele Methoden ausprobieren, endlich funktioniert es. Zuerst sollten Sie einen Schläger erstellen, um dieses Programm zu starten.

start  /B "" "D:\dev\sublime3\Sublime Text 3\subl.exe" "-s" "%USERPROFILE%\Dropbox\dev\apis\*.markdown" 

Sencond, führen Sie diese Fledermaus nach Zeitplan Aufgabe.

run window+R->taskschd.msc->add a task

Fügen Sie einen Auslöser hinzu, um diesen Schläger gemäß diesem Zeitplan auszuführen

Füge diese Fledermaus als auszuführende Operation hinzu

Dieses Ergebnis ist, dass es funktioniert, um zu vermeiden, dass erhabenes Textfenster angezeigt wird, und es funktioniert in Konflikt mit erhabenem Text, der normalerweise geöffnet ist.

Vielleicht haben Sie erraten, dass ich das OmniMarkupPreviewerPlugin verwende, um eine Vorschau des Markdowns anzuzeigen. Ich habe den Fehler behoben (oder das nicht perfekte Feature), dass jedes Mal eine andere Ansichts-ID verwendet wird.

Vincent
quelle
1

Hängt davon ab, welche Windows-Version Sie verwenden.

In Vista sollten Sie in der Lage sein, den Namen der Exe in Ihren Pfad einzugeben und ihn zu aktivieren, nachdem die Eingabeaufforderung geschlossen wurde.

MathewC
quelle
1

Leider halte ich das nicht für möglich.

Sie können dies in einem Windows Scripting Host-Skript tun, mit so etwas wie:

Set oShell = WScript.CreateObject("WScript.Shell")
Set oProc = oShell.Run "<your command here>",0,True

Wenn "0" angibt, dass das resultierende Fenster ausgeblendet werden soll (weitere Optionen finden Sie in der Dokumentation unter http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx ) und " "true" gibt an, dass Sie auf den Abschluss des Befehls warten möchten, bevor Ihr Skript fortgesetzt wird.

Es wäre eine einfache Übung, dies in ein allgemeines Skript zum Ausführen dieses Befehls einzuschließen, das Sie über die Befehlszeile verwenden können.

Wenn Sie Microsofts neue PowerShell installiert haben, gibt es möglicherweise eine einfachere Möglichkeit, dies zu tun (ich habe noch nicht mit PowerShell gearbeitet).

Wenn Sie froh sind, das Fenster minimiert zu haben, können Sie dies mit dem Befehl "start" tun, den Sie bereits erwähnt haben. Leider ist die Option "/ B" (wie es sich anhört, als ob Sie es möchten) nur für Befehle verfügbar und verhindert nicht, dass Anwendungen mit Fenstern auf dem Bildschirm angezeigt werden.

Hinweis: Welche der oben genannten Methoden Sie auch immer verwenden, um ein Programm mit einem ausgeblendeten / minimierten Hauptfenster zu starten. Es gibt keine Möglichkeit, das Programm daran zu hindern, neue Fenster zu erstellen, die sichtbar sind, oder das Hauptfenster nach dem Start in den Fokus zu versetzen.

David Spillett
quelle
1

sc create service und laufen es hat spezielle Zeichen in der Datei und Parameter zum Beispiel

sc create ngrok "cmd /c \"c:\tmp\ngrok.exe\" http 80" type=own type=interactive
Lalo
quelle
1
sc create nrgok binpath = "cmd / c" c: \ tmp \ ngrok.exe \ "http 80" type = own type = interact
Lalo