web-dev-qa-db-fra.com

Trop de dossiers dans la variable du chemin

J'ai rencontré un problème étrange - je ne peux pas lancer Visual Studio, ni exécuter des commandes simples à l'invite de commande, apparemment en raison de la variable de ma trajectoire étant trop longue. Maintenant que je le regarde, je vois que de nombreuses entreprises ont ajouté leurs répertoires d'installation sur la variable de chemin.

Je me demandais pourquoi Ces entreprises ont ajouté leurs dossiers sur le chemin (peut-être pour rendre plus simple à exécuter leurs programmes?), Et qui sont nécessaires et que je peux supprimer. Si je supprime certains d'entre eux, vais-je ne pas être en mesure de lancer les programmes? ( voici Qu'est-ce qui existe actuellement sur le chemin)

15
CC Inc

il est possible de réduire la quantité excessive de chemins dans le chemin des variables d'environnement, il suffit de sauvegarder la ligne entière sur un bloc-notes, de sauvegarder et de supprimer certains.

La plupart d'entre eux sont là, donc si un raccourci n'a pas de chemin complet défini pour la "cible", si le "Démarrer in" n'est pas défini dans le raccourci correctement ou un lancement est fait curieusement leur programme et ses pièces et leurs pièces sont toujours trouvé. C'est un échec dans la plupart des situations. Vous voudrez toujours tester pleinement toute utilisation de tout programme que vous avez supprimé ses chemins.
[.____] Il est également très utile pour les personnes qui tapent des commandes dans le CMDPrompt, même sans CD, l'ordinateur scannera chaque emplacement, jusqu'à ce qu'un programme de ce nom soit trouvé et exécuté. Ou toute autre commande du même nom :-)

Cet ensemble de chemins était (anode) limité à moins de 255 (OR260) des chariots, qui ont changé à 1024, il y a longtemps, puis a été corrigé dans l'ère du serveur'03 pour gérer 2048 et pourrait supposer 8096 sur certains systèmes, même il y a longtemps.

Les limitations réelles ont découvert aujourd'hui que les personnes rencontrées sont dans le CMDPrompt qui a une limite sur la longueur de la chaîne de commande, qui comprend l'expansion des variables et des chemins.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653 (v = vs.85) .aspx Voici Microsoft dit:

"La taille maximale d'une variable d'environnement définie par l'utilisateur est de 32 767 caractères. Il n'y a pas de limitation technique de la taille du bloc d'environnement. Cependant, il existe des limites pratiques en fonction du mécanisme utilisé pour accéder au bloc. Par exemple, un fichier de lot Impossible de définir une variable plus longue que la longueur de la ligne de commande maximale. "

À cet endroit ^, ils indiquent l'emplacement du registre contenant les chemins système HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment DOIT LIRE LE RESTE DEVEZ-VOUS LÀ.

La limitation de la CMDPROMPT et du lot est de 2048 chalamières une fois élargi et sert à 4 fois que pour les nouveaux systèmes (citation des besoins parce que les personnes ne voient pas cela)

Voir également http://support.microsoft.com/kb/83047 , qui décrit l'invite de commande et la longueur du lot pour les systèmes plus anciens.

Pour vous assurer que les entrées sont correctes là-bas, le wiki a cela à dire:
[.____] http://fr.wikipedia.org/wiki/environment_variable

% Chemin% Cette variable contient un point-virgule délimitée ( ne placez pas d'espaces entre ) Liste des répertoires dans lesquels l'interpréteur de commande recherchera un fichier exécutable qui correspond à la commande donnée. Les variables d'environnement qui représentent des chemins peuvent être imbriquées dans la variable de chemin, mais seulement à un niveau d'indirection. Si cette variable d'environnement de sous-path contient une variable d'environnement représentant un chemin, la trajectoire ne se développera pas correctement dans la substitution variable.

Avoir tous les chemins supplémentaires de là ralentit certaines choses par un peu, car il est alors obligé de regarder dans tous ces endroits avant d'abandonner. En utilisant des chemins complets chaque fois que l'appelant des éléments de fichier sera toujours plus rapide, même lorsqu'il est associé ou en utilisant le CMDPrompt.

L'utilisation d'anciennes conventions de 8,3 8,3 est une solution pour réduire la taille, ce lot https://stackoverflow.com/a/20362922 fonctionne bien. Assurez-vous (encore) de sauvegarder la chaîne orginale. Voir aussi les autres solutions possibles à cette question.

Voici comment la mine a l'air, cela a été pire.
(

Je lancerais QuickTime dans un battement de coeur et les programmes AMDS ont mis un chemin prolongé auparavant, je l'ai jeté, Adobee en avait un, aucun de ceux-ci ne comportaient pour des méthodes de raccourci/icône standard. Beaucoup de choses peuvent être supprimées, puis testez toutes les fonctions. Si vous appelez des choses en tapant dans l'invite CMD, alors supprimez ces chemins ne fonctionnera pas.

13
Psycogeek

J'ai plusieurs variables d'environnement liées au développement de logiciels sur mon chemin, qui sont toutes importantes.

La solution ci-dessus ne fonctionnerait pas pour moi, alors je suis allé pour jonctions de répertoire :

  • Sélectionnez quelques-uns des chemins les plus longs de mon chemin (comme C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Créez un petit dossier pour stocker mes jonctions: c:\d \
  • Créer des jonctions courtes pour de longues chemins:

mklink/j c:\d\sql "C:\Fichiers de programme (x86)\Microsoft SQL Server\100\Tools\Binn\vsshell\common7\Ide \"

Faire cela sur 15 chemins a réduit mon chemin de 2045 à 1285 caractères.

Cela peut être un problème lorsque vous désinstaller enfin des trucs de votre machine, car les jonctions resteront sur le chemin et vous devrez les nettoyer manuellement.

9
Juliano

Bien que le maximum admissible dans le chemin est beaucoup plus long, j'ai trouvé sur la pile Overflow Réponses autoritatives sur ce sujet (et les références Microsoft) qui indiquent qu'un maximum étendu La valeur du chemin de 2048 octets fonctionnera et quelque chose de plus long que cela entraînera des problèmes. Par "élargi", je veux dire que toutes les variables notées avec% de délimiteurs auront leurs valeurs insérées pour devenir la valeur étendue et la longueur totale expansée ne doit pas dépasser 2048 octets. J'ai remarqué que les types de problèmes causés (à partir de Windows 7) sont les suivants:

  • Ne reconnaît pas les chemins à la fin de la valeur
  • L'installation de logiciels ou de correctifs qui modifient la valeur du chemin entraînent la valeur de l'exécution de NULL, provoquant ainsi toutes sortes de problèmes exécutant Windows, comme tous les icônes de votre menu de démarrage, de bureau et de la barre de tâches perdent leurs images et des commandes d'invite de commande simples comme " ping "ou" ipconfig "montre la commande non reconnue d'erreurs
  • Les programmes d'application s'appuyant sur les valeurs de chemin échouent

Personnellement, je recommande d'autres systèmes d'exploitation en plus de Windows, mais si vous êtes bloqué dessus, vous devez passer vos heures à supprimer les entrées de trajectoire, à tester pour vous assurer de ne rien briser et d'obtenir la valeur du chemin jusqu'à 2048 octets.

1
Jay Imerman