Pour une CMD
session, je peux facilement définir un nouveau chemin:SET PATH=%PATH%;"insert custom path here"
Cela dans un fichier de commandes ne prend pas en compte si le chemin d'accès personnalisé est déjà inclus. Comment éviter de le dupliquer (c'est-à-dire vérifier s'il est déjà contenu dans la "chaîne" PATH).
Remarques:
- Connexes: Comment ajouter des variables d'environnement définies par l'utilisateur à la variable système PATH dans Windows 7?
- Connexe: Comment puis-je ajouter définitivement une entrée dans la variable PATH du système, via la ligne de commande?
- Même question pour UNIX: Ajouter un répertoire à $ PATH s'il n'est pas déjà là
- Quelques opérations de chaîne "CMD" expliquées: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Horst Walter
la source
la source
Réponses:
Semblable à la réponse de MaddHackers, juste plus compact.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
est votre nouveau chemin, vous pouvez bien sûr utiliser des littéraux à la place. Ce qu'il fait:echo %path%|find /i "%np%">nul
recherche une chaîne dans le chemin existant, en supprimant la sortie.||
signifie exécuter en cas d'échec, donc cela signifie: chemin de recherche de la chaîne à ajouter, et s'il n'est pas trouvé, ajoutez-le.Edit: Généralement, il n'est pas nécessaire de citer des chemins, même ceux contenant des espaces, mais si vous voulez les citer , cette version fonctionnera avec des chemins entre guillemets doubles:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Edit: changé
findstr /i /c:
enfind /i
carfindstr
peut mal interpréter certaines séquences comme l'a noté KubaOber dans les commentairesla source
%np%
contient des guillemets - oui, cela entraînera un mauvais comportement.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) devrait fonctionner correctement.echo d\. | findstr /c:"d\."
échoue, maisecho d\. | find "d\."
réussitJe sais que c'est sale, mais cela devrait fonctionner:
où
%checkstr%
est la chaîne à vérifier dans le CHEMIN et%newpath%
est le nouveau CHEMIN à ajouter au CHEMIN actuelJ'espère que cela aide, et je suis sûr qu'il existe un moyen plus simple, mais cela devrait faire l'affaire pour l'instant.
ÉDITER
Donc, si vous ne voulez pas ajouter les outils UNIX à Windows, vous pouvez essayer cette syntaxe par lots:
Ugh, pas plus joli, et peut être fait en une seule ligne si vous pouvez faire fonctionner la commande find de pipe comme une sous-commande dans l'instruction if ...
la source
Script basé sur la réponse de "wmz":
la source