La variable d'environnement est trop grande sous Windows 10

147

Je sais que c'est étrange et j'ai passé près de 3 jours à rechercher 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 également créer la variable système où je devrai ajouter le répertoire bin à la variable que je crée déjà dans la variable utilisateur pour être "path".

Maintenant, chaque fois que je fais cela, j'obtiens une erreur qui dit "Cette variable d'environnement est trop grande. Par conséquent, je suis incapable de créer le chemin.

J'ai joint l'image de cette erreur.

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

Merci d'avance pour votre aide.entrez la description de l'image ici

Olammy
la source
14
J'espère qu'ils régleront ce problème un jour. Cela ne devrait jamais arriver. ^^
itmuckel
1
La bonne solution est que les applications arrêtent d'utiliser abusivement PATHla variable d'environnement. La bonne solution existe depuis près de 2 décennies maintenant . Mais amener les développeurs à l'utiliser, c'est comme se tirer les dents.
Ian Boyd

Réponses:

148

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, dites «NEWPATH»
  2. Attribuez l'emplacement du répertoire bin à 'NEWPATH'
  3. Maintenant, ajoutez ' ; % NEWPATH% 'à la variable PATH

Si cela ne fonctionne toujours pas, essayez de copier une partie des valeurs déjà existantes de la variable PATH 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: \ Program Files \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C: \ Program Files \ 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 finalement ajuster l'emplacement de votre répertoire bin dans PATH.

J'espère que cela vous aide!

Swapnil Kamat
la source
Oui, vous avez tout à fait raison. Tant de recherches m'avaient montré que la variable de chemin ne peut prendre que 2048 caractères et que lorsque les personnages atteindront ce stade, la variable de chemin ne pourra plus prendre beaucoup de caractères. J'ai donc essayé ce que vous avez suggéré et je vais bien. Merci
olammy
Je vous remercie! C'est une excellente idée @ solution 1! J'aurais dû y penser moi-même ... :)
Dev-iL
2
Cela fonctionne comme un charme, merci! Cependant, il faut être prudent lors de l'utilisation setx PATHcar cela résoudra directement le %NEWPATH%et la chaîne résultante sera encore une fois trop longue ... Donc, en utilisant cette approche, seule la boîte de dialogue et non la ligne de commande doit être utilisée
IceFire
1
@SwapnilKamat Cela ne fonctionne pas complètement: j'utilise miktex, il pdflatexdoit être dedans, PATHsi je mets l'emplacement de pdflatexin NEWPATH, pdflatexil n'est plus trouvé ("la commande pdflatexn'est pas reconnue" ...)
Olorin
7
Ironiquement, Microsoft SQL Server a défini tellement de variables de chemin d'accès qu'il remplit à lui seul presque l'espace. J'ai créé une variable PATHS_MSSQL puis ajouté% PATHS_MSSQL% à la variable PATH pour prendre leur place. Libéré beaucoup d'espace dans la variable PATH.
Steve Lloyd
49

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

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

Je fais les étapes ci-dessus dans l'ordre et n'utilise la 3ème étape que 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 le petit outil C # que vous pouvez modifier selon toute autre logique que vous souhaitez implémenter.

Shital Shah
la source
Avant de lire cet article, je n'avais jamais entendu parler de l'un ou l'autre de ces outils mais je suis content de l'avoir fait! Merci d'avoir partagé!
James Shaw
2
Cet outil est génial! MS devrait en faire l'éditeur officiel fourni avec Windows!
burzum
35

Une autre solution ou plus une solution de contournement pour contourner la limite de longueur de variable PATH de l'environnement est de gérer votre chemin (ajouter, supprimer ou mettre à jour) à l'aide d'un PowerShellscript;

  1. Capturez la variable PATH actuelle en cliquant sur "Modifier le texte" (voir la capture d'écran ci-dessus) et copiez-la dans votre presse-papiers et enregistrez-la également dans un fichier texte en tant que sauvegarde pour éviter de 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 à un nouveau fichier PowerShell (.ps1) (en modifiant la première ligne ci-dessous avec le (s) chemin (s) de dossier que vous souhaitez ajouter (la partie après le signe +)):

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

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

    $ env: Chemin = $ nouveauPath

C'est ainsi que j'ai réussi à récupérer ma variable (longue) PATH après avoir joué avec l'interface utilisateur de Windows 10, en étant pris par la limitation de longueur et en perdant la majeure partie de mon chemin. J'espère que cela aide.

Sifou13
la source
Merci ... C'était facile. Curieux de savoir quelle est la différence entre l'attribution d'une valeur aux lignes 2 et 3
Nayak
La ligne 3 le définit dans la session en cours, la ligne 2 le définit comme machine par défaut.
Tetsujin no Oni
2
PS fonctionne pour un chemin plus long mais traditionnel setx /mtronque à 1048 caractères: (. Vous pouvez également modifier le chemin dans l'éditeur de texte et le faire [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine"). Vous aurez besoin du shell d'administration.
Shital Shah
Il est possible d'utiliser PS mais pas d'interface graphique. Hm, comment cela a-t-il un sens? Vote positif, merci!
Legends
11

En plus de la réponse de Swapnil, notez que vous pouvez modifier la longueur maximale de la variable Path - qui est par ailleurs limitée à 2048 caractères (alors qu'un seul chemin a une limite historique de 206 caractères). Dans Windows 10, vous y parvenez en définissant la LongPathsEnabledclé de registre sur 1, qui peut être trouvée ici:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

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

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

Jetez également un œil à cette réponse SuperUser: https://superuser.com/a/1119980/327009

Adressant le commentaire ci-dessous: l'erreur "La variable d'environnement est trop grande" est liée à la variable entière, pas au chemin unique en cours d'ajout.

alexlomba87
la source
19
Est-ce un conseil précis? La longueur maximale de la variable PATH (c'est-à-dire la concaténation de plusieurs chemins ) est de 2 048 caractères. 260 caractères que vous avez mentionnés est la longueur maximale d' un chemin . Ils sont liés mais pas les mêmes.
Hendy Irawan
7

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'en utilisant "% ProgramFiles (x86)% \"

Cela m'a sauvé quelques personnages mais assez pour que ça cesse de me plaindre.

Bryan
la source
7
Pourquoi ne pas simplement utiliser% x86% pour remplacer "C: \ Program Files (x86)" et% x64% pour remplacer "C: \ Program Files", semble être une bien meilleure façon de réduire la surcharge de caractères.
Xorcist
1
@Xorcist - gentil!
Je
Je ne pense pas qu'ils existent par défaut mais vous pouvez les créer vous-même.
Gabriel Fair
J'ai aussi fait comme ça, j'ai créé% PF% pour "c: \ Program FIles" et l'utiliser environ 20 fois m'a permis de raccourcir suffisamment le chemin.
LaBracca le
@Xorcist comment est-ce fait en créant une autre variable?
Demodave
5

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

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

J'ai donc récupéré le PATH système existant, collé dans le bloc-notes, ajouté mon nouveau truc, puis collé dans le bit "C: \ Program Files" de ce qui précède. Chemin mis à jour. Terminé.

ÊTRE
la source
4

Essayez de modifier par regedit, dans mon cas, cela fonctionne lorsque la longueur est supérieure à 3000.

Appuyez sur Win + Ret entrez regeditpour ouvrir regedit. Accédez à Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentet modifiez la valeur de Pathvotre chemin. Et redémarrez l'ordinateur, cela devrait fonctionner.

yu yang jian
la source
1
Cela a bien fonctionné pour moi. Je pense que c'est plus simple que les autres méthodes.
shalitha senanayaka le
1

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 vous aide pas, veuillez:

Lancez c: \ windows \ system32 \ regedit.exe Accédez à la ruche du registre "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" Nettoyez les répertoires inutiles à partir de la touche "Chemin" Redémarrez le système

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

Connectez-vous en mode sans échec Ouvrez le shell de l'invite de commande et tapez: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Path / 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

LeoZ
la source
Comment augmenter la limite au moins 4095?
Dan M.
1

En plus d'autres méthodes (par exemple Powershell), j'ai trouvé une belle interface graphique, "Rapid Environment Editor" qui peut gérer des valeurs de texte plus grandes.

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

Amir
la source
0

Apparemment, Rapid Environment Editor le fera pour vous (à partir de la réponse @shatil_shah), mais vous pouvez également raccourcir les chemins vers leur version "8dot3". Vous obtiendrez beaucoup de kilomètres avec seulement ces deux remplacements:

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

Si vous copiez votre chemin actuel dans le Bloc-notes, commencez par rechercher et remplacer C:\Program Files (x86), puis C:\Progam Files.

bfris
la source
-3

Solution de contournement. Utilisez Modifier le texte et modifiez votre PATH dans un éditeur de texte

Christoph Adamakis
la source
2
J'essaye de suivre vos conseils. Dans quel fichier les variables d'environnement sont-elles stockées sur mon ordinateur?
Gabriel Fair
ce n'est que du texte. Ouvrez-le en utilisant le bloc
Christoph Adamakis
@GabrielFair Vous deviez cliquer sur le bouton appelé Edit Text, au lieu d'ouvrir un fichier.
AlexMelw