Puis-je exécuter un programme GUI en arrière-plan sur la ligne de commande Windows?

13

Par exemple, dans Bash, je peux faire ceci:

emacs foo.txt &

Existe-t-il un équivalent dans Windows? Je n'arrive pas à trouver un moyen de le faire avec la version Windows d'emacs.

Jason Baker
la source

Réponses:

21

La commande pour lancer des programmes à partir de la ligne de commande dans Windows est "démarrer"

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

Vous voudrez peut-être utiliser l'option MIN pour démarrer un programme minimisé

Kevin Kuphal
la source
2
Pour info, la commande correcte dans ce cas est "start / B emacs foo.txt". Sinon, il s'exécute dans sa propre fenêtre de console, ce qui est acceptable, mais ennuyeux. :-)
Jason Baker
3

Je ne sais pas si ce sera suffisant, mais essayez

start emacs foo.txt

Il ne passera pas en arrière-plan mais il démarrera plutôt une fenêtre cmd.exe distincte pour la commande.

kubanczyk
la source
2

HaHa, j'ai réussi, Utiliser sublime text3 comme serveur d'aperçu de démarque est ma proposition, après avoir fermé la fenêtre de sublime text, je ne travaillerai pas. J'essaierais plusieurs méthodes, enfin ça marche. tout d'abord, vous devez créer une chauve-souris pour démarrer ce programme.

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

sencond, exécutez cette batte par tâche planifiée.

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

ajouter un déclencheur pour exécuter cette batte selon ce calendrier

ajouter cette batte comme une opération à exécuter

Ce résultat est que cela fonctionne pour éviter d'afficher la fenêtre de texte sublime. Et cela fonctionne en conflit avec le texte sublime normalement ouvert.

Peut-être que vous l'aviez deviné, j'utilise un OmniMarkupPreviewerplugin pour prévisualiser le démarque.

vincent
la source
1

Cela dépend de la version de Windows que vous utilisez.

Sous Vista, vous devriez être en mesure de taper le nom de l'exe sur votre chemin et de le faire vivre une fois l'invite de commande fermée.

MathewC
la source
1

Malheureusement, je ne pense pas que cela soit possible.

Vous pouvez le faire dans un script Windows Scripting Host, avec quelque chose comme:

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

Lorsque le "0" indique que la fenêtre résultante doit être masquée (pour d'autres options, consultez la documentation à http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx ) et le " true "indique que vous souhaitez attendre la fin de la commande avant de poursuivre votre script.

Ce serait un exercice simple d'envelopper cela dans un script générique "exécuter cette commande cachée" que vous pourriez utiliser à partir de la ligne de commande.

Si vous avez installé le nouveau PowerShell de Microsoft, il peut y avoir un moyen plus simple de le faire (je n'ai pas encore travaillé avec PowerShell).

Si vous êtes satisfait d'avoir réduit la fenêtre, vous pouvez le faire avec la commande "start" que l'autre mention. Malheureusement, l'option "/ B" (qui semble être ce que vous voulez) ne concerne que les commandes et n'empêche pas les applications fenêtrées d'apparaître à l'écran.

Remarque: quel que soit ce que vous utilisez ci-dessus, vous démarrez un programme avec une fenêtre principale cachée / minimisée, rien ne l'empêche de créer de nouvelles fenêtres visibles ou de mettre la fenêtre principale en surbrillance une fois qu'il est en cours d'exécution.

David Spillett
la source
1

sc create service et l'exécuter a des caractères spéciaux sur le fichier et les paramètres par exemple

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