web-dev-qa-db-fra.com

Comment contourner les restrictions sur la longueur de la variable PATH

error message

Propriétés système

Cette variable d'environnement est trop grande. Cette boîte de dialogue permet de définir des valeurs allant jusqu'à 2047 caractères.

J'utilise/ai utilisé beaucoup de logiciels, et mon chemin a donc grandi. Lorsque j'essaie d'ajouter de nouveaux chemins, je reçois le message ci-dessus. En guise de solution de contournement, j'édite mon chemin utilisateur, mais je préfère ne pas le faire.

5
Tobi Alafin

La documentation de Microsoft indique qu'une variable d'environnement sous Windows est limitée à 32 767 caractères ( lien ), mais n'indique pas comment créer une variable aussi longue.

Le problème ici est que les outils fournis par Windows ont tous leurs limites:

  • Les commandes set et setx tronquent les valeurs à 1023 caractères.

  • La définition directe dans le registre à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment échoue car regedit tronque les chaînes entrées après 2047 caractères.

Vous devez donc utiliser des solutions de contournement.

Utilisez des noms de dossiers courts

Vous pouvez voir ces noms en utilisant dir /x /ad. L'exemple suivant montre que sur mon ordinateur, le dossier Program Files (x86) peut être remplacé par PROGRA~2:

enter image description here

Utiliser des variables d'environnement incorporées

Si tu as:

C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2

alors vous pouvez créer une nouvelle variable d'environnement telle que:

SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places

après quoi vos chemins originaux deviennent

%P1%\subdir1
%P1%\subdir2

Vous pouvez également scinder PATH en deux en créant une nouvelle variable, nommée NEWPATH, contenant les chemins en excès, et ajouter ;%NEWPATH% à la variable PATH.

Évitez d’utiliser commande setx car cela résoudra directement les variables d’environnement incorporées et la chaîne résultante sera encore une fois trop longue.

Utilisez un script PowerShell pour définir le PATH

PowerShell appelle directement l'API Windows et peut ainsi approcher la limite théorique de 32 767 caractères pour une variable d'environnement.

Le script peut contenir des commandes telles que:

[Environment]::SetEnvironmentVariable("Path", $longpath, "Machine")
5
harrymc