J'ai un répertoire dans mon dossier personnel dans lequel je place un logiciel en ligne de commande (CMD_Software). J'ai mis chaque logiciel dans son propre répertoire dans CMD_Software afin d'éviter l'encombrement.
Je voudrais faire une seule entrée dans ma variable PATH qui permettra d'accéder à CMD_Software et à tous les répertoires qu'il contient à partir de la ligne de commande.
J'ai essayé C:\Users\myuser\CMD_Software\*
mais cela n'a rien fait. C'est le moment où j'ai manqué d'idées.
Veuillez noter que je n'essaie pas de définir un nouveau chemin d'accès dans le terminal, j'essaie de définir un nouveau chemin d'accès dans les "Variables d'environnement" disponibles sur l'onglet "Avancé" des Propriétés système.
windows
windows-8
command-line
environment-variables
Landon Brainard
la source
la source
Réponses:
La variable PATH ne prend pas en charge les caractères génériques ni la récursivité. C'est par conception.
Il existe deux solutions possibles que j'ai utilisées à l'occasion:
Créez un répertoire avec des fichiers batch simples et ajoutez ce répertoire au PATH. Chaque fichier batch peut lancer le programme que vous souhaitez, par exemple:
La première ligne est un commentaire, la seconde commence par
@
pour éviter d'afficher la commande en cours d'exécution et%*
est utilisée pour transmettre tous les arguments de ligne de commande à l'EXE.Ajoutez des alias à CMD.EXE:
Cela se traduit essentiellement
CMD_Software
dans l'invite de commandes par tout ce qui se trouve après le signe égal. Le$*
est remplacé par les arguments fournis.Je préfère la deuxième approche, car vous pouvez regrouper tous les alias dans un seul fichier (voir le commutateur "/ MACROFILE" dans DOSKEY /?) Et le faire exécuter automatiquement chaque fois que l'interpréteur de commandes commence à utiliser un paramètre de registre (voir la clé "AutoRun" dans CMD /?).
Un inconvénient de la deuxième méthode est que les alias ne fonctionnent qu'au début d'une ligne de commande. Cela peut être un problème si vous souhaitez chaîner des commandes. Par exemple,
CLS & CMD_Software
ne fonctionnera que si vous placez l'alias sur une ligne distincte à l'aide de parenthèses:Chaque fois que cela devient un problème, je reviens simplement à l'approche du fichier batch.
la source
C'est ce que j'utilise pour résoudre le problème. Copiez ce script ci-dessous et enregistrez-le
FIXPATH.BAT
dans le dossier que vous avez ajouté à laPATH
variable d'environnement. Par exemple:Maintenant, chaque fois que vous devez exécuter un programme qui se trouve dans un sous-dossier, dites ...
Exécutez d'
fixpath
abord puis entrez la commande (par exemplegrep
ouexiftool
) comme ceci:FIXPATH.BAT
Merci à la réponse de @ VonC
la source
Placez un sous-répertoire "programlinks \" sous ... \ CMD_Software (ou n'importe où, en fait) et remplissez-le de liens symboliques ou de liens physiques vers chaque exécutable auquel vous souhaitez accéder. Une seule entrée dans le CHEMIN pour ... \ programlinks suffira.
la source
Si l'idée ne vous dérange pas trop, vous pouvez copier vos outils de ligne de commande dans le répertoire Windows \ System32. Ensuite, vous pouvez les exécuter à partir de n'importe quel répertoire, tout comme ping ou ipconfig.
modifier
Après un peu de bricolage, c'est possible. Il vous suffit d'utiliser des points-virgules pour délimiter vos répertoires. Supposons que vous ayez un programme dans "dossier1" et "dossier2". Vous écririez votre chemin comme ceci:
Ensuite, vous pouvez appeler un programme dans l'un ou l'autre répertoire directement à partir de la ligne de commande. AFAIK, il n'y a pas d'autre moyen de le faire avec une seule ligne.
Informations de support: http://en.wikipedia.org/wiki/PATH_(variable)
la source
program.bat
as%PATH%\program.bat
est plus ou moins l'opposé de ce pour quoi PATH est conçu.