Exécuter les liens de raccourci à partir d'un fichier de commandes et ne pas attendre l'application pour quitter
J'ai plusieurs applications que j'ai tendance à avoir besoin de l'ouvrir dans le même temps, et plutôt que de compter uniquement sur le dossier de Démarrage pour lancer en même temps (et donc je peux rouvrir tous si certains ont été fermés à un certain point tout au long de la journée), j'ai créé un dossier plein de raccourcis dans un mode similaire à celui de Linux niveau d'exécution liens de démarrage. Ainsi, dans le dossier que j'ai raccourci les liens de ce type:
- S00 - Outlook.lnk
- S01 - Notepad++.lnk
- S02 - Chrome.lnk
- S03 - Skype.lnk
J'ai créé un fichier batch qui va parcourir tous les liens qui correspondent le format de nom et de les lancer. Le contenu de ce fichier de commandes est actuellement:
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO "%%f"
Le lancement la plupart des liens que j'ai essayer, mais certains se lancer et d'attendre que le processus de sortie, empêchant ainsi les autres scripts à partir de l'ouverture. Est-il possible d'exécuter les raccourcis sans attendre pour un processus de sortie dans le fichier de lot? Ou est-ce une cause perdue et que je devrais regarder pour une Powershell solution à la place?
Choses que j'ai essayé jusqu'à présent:
-
En modifier le contenu à
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO START /B /I "%%f"
Il lance l'invite de commande dans un processus d'arrière-plan, mais jamais réellement lance la cible du lien.
-
En modifier le contenu à
@FOR /F "usebackq delims==" %%f IN (`dir /b "S* - *.lnk"`) DO %comspec% /k "%%f"
Il lance le premier lien, mais attend.
Vous devez vous connecter pour publier un commentaire.
Essayer la première méthode, mais de prendre de la
/B
hors de laSTART
de commande. De cette façon, le processus va s'ouvrir dans une nouvelle fenêtre, de sorte qu'il ne devrait pas être la peine d'attendre.Avec l' /B, il va lancer le processus dans la même fenêtre. Donc, si le processus bloque pour une raison quelconque, vous n'obtiendrez pas de contrôle vers l'arrière jusqu'à ce qu'il termine. Considérons, par exemple, le fichier de commandes suivant, foo.chauve-souris (vous avez besoin de sommeil de commande pour cela, j'ai cygwin c'est avec ça):
À partir d'une invite de commande, si vous tapez
vous remarquerez que le contrôle n'est pas revenir à l'invite de commande jusqu'à ce que le sommeil les finitions. Toutefois, si nous le faisons:
ensuite, le contrôle revient immédiatement (parce que foo.chauve-souris commence dans une nouvelle fenêtre), qui est ce que vous voulez.
START foo.bat
est si un autre script (direbar.bat
) l'appelle, il va rester "actif" jusqu'à ce quefoo.bat
termine son exécution. Donc, si votrefoo.bat
est une boucle de script qui bloque les ressourcesbar.bat
sera "en cours d'utilisation" et de verrouillage de ressources (même si le bar.bat' est fermé) jusqu'à ce que " foo.chauve-souris " est fermé.dcp réponse pointé dans la bonne direction en l'essayant, sans
/B
drapeau, mais ce n'était pas la solution. ApparemmentSTART
participeront à la première chaîne de caractères entre guillemets, quel que soit l'ordre des paramètres qui lui sont passés, comme le titre de la nouvelle fenêtre plutôt que de croire que c'est le fichier exécutable/commande. Ainsi, lorsque leSTART
processus lancé ils avaient des liens de raccourci, comme le titre de la fenêtre, et le répertoire de départ est le répertoire de travail du principal fichier de commandes. J'ai donc mis à jour mon fichier pour le fichier de commandes pour la suite et ça fonctionne: