Dis, si j'ai
- foo.exe
- bar.exe
- baz.exe
Comment les exécuter tous à partir d'un fichier batch de manière asynchrone, c'est-à-dire sans attendre l'arrêt du programme précédent?
batch-file
cmd
RichN
la source
la source
help
. :)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:
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.
la source
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.)
la source
BREAK
le clavier ces jours-ci?Créez un fichier batch avec les lignes suivantes:
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.
la source
Utilisez la commande START :
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
Si vous devez fournir des arguments, ajoutez-les à la fin (en dehors des guillemets de commande)
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
la source
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:
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.
la source
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
la source