Réponses:
L'utilisation de la START
commande pour exécuter chaque programme devrait vous fournir ce dont vous avez besoin:
START "title" [/D path] [options] "command" [parameters]
Chaque START
appel exécute la commande donnée dans son paramètre et retourne immédiatement, sauf si elle est exécutée avec un /WAIT
commutateur.
Cela s'applique aux applications de ligne de commande. Les applications sans ligne de commande retournent immédiatement de toute façon, donc pour être sûr, si vous souhaitez toutes les exécuter de manière asynchrone, utilisez START
.
En combinant quelques-unes des réponses précédentes, vous pouvez essayer start /b cmd /c foo.exe
.
Pour un exemple trivial, si vous souhaitez imprimer les versions de java / groovy / grails / gradle, vous pouvez le faire dans un fichier batch:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Si vous avez quelque chose comme Process Explorer (Sysinternals), vous verrez quelques processus enfants cmd.exe, chacun avec un processus java (selon les commandes ci-dessus). La sortie s'imprimera à l'écran dans n'importe quel ordre de fin.
start /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
cmd /c : Carries out the command specified by string and then terminates
echo off
au début ce qui, lorsque vous exécuterez le script, empêchera toutes les commandes d'être renvoyées à la console. Le @
est similaire mais juste pour cette seule commande. Donc, parfois vous verrez @echo off
.
Vous pouvez utiliser la commande start pour générer des processus d'arrière-plan sans lancer de nouvelles fenêtres:
start /b foo.exe
Le nouveau processus ne pourra pas être interrompu avec CTRL-C; vous pouvez le tuer uniquement avec CTRL-BREAK (ou en fermant la fenêtre, ou via le Gestionnaire des tâches.)
BREAK
le clavier ces jours-ci?
Créez un fichier batch avec les lignes suivantes:
start foo.exe
start bar.exe
start baz.exe
La commande start exécute votre commande dans une nouvelle fenêtre, de sorte que les 3 commandes s'exécutent de manière asynchrone.
Utilisez la commande START :
start [programPath]
Si le chemin d'accès au programme contient des espaces, n'oubliez pas d'ajouter des guillemets. Dans ce cas, vous devez également fournir un titre pour la fenêtre d'ouverture de la console
start "[title]" "[program path]"
Si vous devez fournir des arguments, ajoutez-les à la fin (en dehors des guillemets de commande)
start "[title]" "[program path]" [list of command args]
Utilisez l'option / b pour éviter d'ouvrir une nouvelle fenêtre de console (mais dans ce cas, vous ne pouvez pas interrompre l'application en utilisant CTRL-C
Il existe une troisième option (et potentiellement beaucoup plus simple). Si vous souhaitez lancer plusieurs instances d'un même programme, l'utilisation d'un processeur de commande de style Unix comme Xargs ou GNU Parallel peut en faire un processus assez simple.
Il existe un clone win32 Xargs appelé PPX2 qui rend cela assez simple.
Par exemple, si vous souhaitez transcoder un répertoire de fichiers vidéo, vous pouvez exécuter la commande:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
En le séparant, dir /b *.mpg
saisit une liste de fichiers .mpg dans mon répertoire actuel, l' |
opérateur redirige cette liste dans ppx2, qui construit ensuite une série de commandes à exécuter en parallèle; 4 à la fois, comme spécifié ici par l' -P 4
opérateur. le-L 1
opérateur dit à ppx2 de n'envoyer qu'une seule ligne de notre liste de répertoires à ffmpeg à la fois.
Après cela, vous écrivez simplement votre ligne de commande ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
), et{}
se substitue automatiquement à chaque ligne de votre liste de répertoires.
Ce n'est pas universellement applicable à tous les cas, mais c'est beaucoup plus facile que d'utiliser les solutions de contournement de fichier de commandes détaillées ci-dessus. Bien sûr, si vous ne traitez pas avec une liste de fichiers, vous pouvez également diriger le contenu d'un fichier texte ou de tout autre programme vers l'entrée de pxx2.
Je ne pouvais rien faire fonctionner J'ai fini par utiliser juste PowerShell pour démarrer des scripts bat .. parfois même démarrer cmd / c ne fonctionne pas je ne sais pas pourquoi .. J'ai même essayé des trucs comme start cmd / c notepad & exit
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
. :)