web-dev-qa-db-fra.com

La variable d'environnement est trop grande sous Windows 10

Je sais que c'est étrange et j'ai passé presque 3 jours à chercher la solution en ligne sans en obtenir une utile. J'ai donc décidé de venir ici.

J'ai récemment mis à niveau vers Windows 10 à partir de Windows 8.1.

Maintenant, je voulais définir une variable d'environnement pour ma nouvelle installation d'Apache Maven.

Chaque fois que j'ai créé la variable utilisateur, tout va bien. Cependant, je dois aussi créer la variable système et ajouter le répertoire bin à la variable que je suis déjà créée dans la variable utilisateur afin d'être "chemin".

Maintenant, chaque fois que je fais cela, je reçois une erreur qui indique "Cette variable d’environnement est trop grande. En conséquence, je ne parviens pas à créer le chemin.".

J'ai joint l'image de cette erreur.

J'apprécierai ceci si quelqu'un peut m'aider à résoudre ce problème.

Merci d'avance pour votre aide. enter image description here

106
olammy

Lorsque la variable PATH est surchargée avec trop de valeurs, elle atteint un point où vous ne pouvez plus ajouter de valeurs. Essayer ce qui suit devrait résoudre votre problème.

Solution 1:

  1. Créez une nouvelle variable système avec le mot 'NEWPATH'
  2. Attribuer l'emplacement du répertoire bin à 'NEWPATH'
  3. Ajoutez maintenant ';% NEWPATH%' à la variable PATH

Si cela ne fonctionne toujours pas, essayez de copier une partie de la variable PATH contenant déjà des valeurs dans le "NEWPATH", puis ajoutez le "NEWPATH".

Solution 2:

Vérifiez la valeur de la variable PATH si vous pouvez grouper et raccourcir les chemins. Par exemple,

C:\Programmes\Microsoft SQL Server\102\Outils\Binn \; C:\Programmes\Microsoft SQL Server\102\DTS\Bin \;

peut être combiné à

C:\Program Files\Microsoft SQL Server;

De cette façon, vous pouvez créer plus d’espace dans votre variable PATH de longueur fixe et enfin ajuster l’emplacement de votre répertoire bin dans PATH.

J'espère que cela vous aide!

110
Swapnil Kamat

Il y a peu de façons de nettoyer votre variable de chemin. Le plus simple est d'utiliser Rapid Environment Editor . Cet utilitaire gratuit va,

  1. Supprimer les chemins en double (clic droit> Chemins de nettoyage)
  2. Supprimer les dossiers inexistants (en rouge, que vous devez supprimer manuellement)
  3. Remplacez les longs chemins par des chemins courts (clic droit> chemin long à court).

Je fais les étapes ci-dessus dans l'ordre et utilise la 3ème étape uniquement pour les chemins les plus longs jusqu'à ce que la taille de la variable Path soit à nouveau sous contrôle.

Si vous voulez aller plus avancé, voici petit outil C # que vous pouvez modifier pour n’importe quelle autre logique que vous souhaitez implémenter.

34
Shital Shah

Une autre solution ou plusieurs solutions pour contourner la limite de longueur de variable PATH d’environnement consiste à gérer votre chemin (ajout, suppression ou mise à jour) à l’aide d’un script PowerShell;

1) Capturez la variable PATH actuelle en cliquant sur "Modifier le texte" (voir capture d'écran ci-dessus), copiez-la dans votre presse-papiers et enregistrez-la dans un fichier texte comme sauvegarde pour éviter les mauvaises surprises. Ce n'est pas obligatoire mais vous permettra de récupérer en cas de problème.

2) Maintenant qu'il est sauvegardé, ajoutez ce qui suit dans un nouveau fichier PowerShell (.ps1) (en modifiant la première ligne ci-dessous avec le ou les chemins de dossier que vous souhaitez ajouter (la partie après le signe +):

$newPath = $env:Path + '; C:\Users\....\FirstFolderToAddToPath; C:\Users\....\SecondFolderToAddToPath;'

[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")

$env:Path = $newPath

C’est ainsi que j’ai réussi à récupérer ma (longue) variable PATH après avoir joué avec l’interface utilisateur de Windows 10, en me faisant prendre par la limitation de longueur et en perdant presque tout mon chemin. J'espère que ça aide.

26
Sifou13

Outre la réponse de Swapnil, notez que vous pouvez modifier la longueur maximale d'un seul chemin dans la variable Path - qui, par ailleurs, est historiquement limitée à 260 caractères. Dans Windows 10, vous réalisez cela en définissant la clé de registre LongPathsEnabled sur 1, que vous pouvez trouver ici:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Pour accéder à l'éditeur de registre: Windows Key+R, tapez Regedit.

Source: https://superuser.com/a/111998

Jetez également un coup d'œil à cette réponse du superutilisateur: https://superuser.com/a/1119980/327009

8
alexlomba87

Réponse tardive mais je cherchais quelque chose de similaire et je me suis retrouvé ici. J'ai changé tous les chemins d'accès aux variables pour les fichiers de programme et les données de programme (celui-ci enregistre comme 1 caractère mais pas aussi important).

Pour quelque chose comme nodejs, j’ai changé le chemin normal de

C:\Program Files\nodejs \

à

% ProgramFiles%\nodejs \

Cela peut être fait avec "C:\Program Files (x86) \" ainsi qu'avec "% ProgramFiles (x86)% \"

Cela m'a épargné quelques personnages mais suffisamment pour que cela cesse de me plaindre.

6
Bryan

Solution de contournement:

Veuillez redémarrer le système. Après le redémarrage du système, PATH n'est plus vide, mais peut être tronqué à 2047 (4095) caractères. Si le redémarrage du système ne résout pas le problème, veuillez:

Lancez c:\windows\system32\regedit.exe Accédez au registre Hive "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" Efface les répertoires inutiles à l'aide de la touche "Chemin" Redémarrer le système

Remarque: Dans certains cas exceptionnels, si le système ne peut pas démarrer, veuillez:

Connexion en mode sans échec Ouvrez la commande Invite Shell et tapez: reg add "HKLM\SYSTEM\CurrentControlSet\Control\Gestionnaire de sessions\Environnement"/v Chemin/t REG_EXPAND_SZ/d ^% SystemRoot ^%\system32; ^% SystemRoot ^% /F

Pour plus de détails: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

1
LeoZ

J'ai trouvé que vous pouvez le faire via PowerShell.

[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")

J'ai donc attrapé PATH du système existant, collé dans le bloc-notes, ajouté ma nouvelle chose, puis collé dans le bit "C:\Program Files" de ce qui précède. Chemin mis à jour. Terminé.

0
B E

Outre d'autres méthodes (par exemple, Powershell), j'ai trouvé une interface graphique de Nice, "Rapid Environment Editor", capable de gérer des valeurs de texte plus importantes.

https://www.rapidee.com/en/download

0
Amir

En ajoutant aux autres réponses, si vous avez l'éditeur de stratégie de groupe dans vos fenêtres, appuyez sur WINKEY + R et écrivez gpedit.msc. Dans la fenêtre qui apparaît à gauche de l'arborescence, accédez à:

Configuration de l'ordinateur -> Modèles d'administration -> Système -> Système de fichiers et double-cliquez sur "Activer les chemins longs pour Win32" et définissez-le sur Activer. Vous devrez peut-être redémarrer pour que les modifications prennent effet.

Notez qu'en tant que personne qui crée un outil de gestion des variables d'environnement pour un projet spécifique sur lequel je travaille, je peux dire que les variables d'environnement Windows sont assez boguées lorsqu'il s'agit de référencer des variables à des variables qui référencent déjà une autre variable, ce qui est plutôt stupide Afin de pouvoir lire correctement ce type de variables, vous devez démarrer l’application qui lit ces variables avec le droit d’événement evault (en tant qu’administrateur), sinon elle lirait les variables sous la forme% SOME_VARIABLE%/Folder1/Folder2. C'est pourquoi j'ai arrêté d'utiliser cette fonctionnalité et d'utiliser un chemin absolu car j'ai beaucoup de variables définies dans les variables d'environnement utilisateur et système pour mon environnement de développement. Je recommande de ne pas référencer une variable qui contient déjà une variable référencée de mon expérience pour éviter ce genre de situation.

0
Gilad Reich