Die Umgebungsvariable ist unter Windows 10 zu groß

147

Ich weiß, dass dies seltsam ist, und ich habe fast 3 Tage damit verbracht, online nach der Lösung zu suchen, ohne eine nützliche zu bekommen. Also habe ich beschlossen, hierher zu kommen.

Ich habe kürzlich ein Upgrade von Windows 8.1 auf Windows 10 durchgeführt.

Jetzt wollte ich eine Umgebungsvariable für meine neue Installation von Apache Maven festlegen.

Jedes Mal, wenn ich die Benutzervariable erstellt habe, sind die Dinge in Ordnung. Ich muss jedoch auch die Systemvariable erstellen, in der ich das bin-Verzeichnis an die Variable anhängen muss, die ich bereits in der Benutzervariablen erstellt habe, um "Pfad" zu sein.

Jedes Mal, wenn ich dies tue, erhalte ich einen Fehler mit der Aufschrift "Diese Umgebungsvariable ist zu groß. Infolgedessen kann ich den Pfad nicht erstellen.

Ich habe ein Bild dieses Fehlers angehängt.

Ich werde es begrüßen, wenn mir jemand helfen kann, dieses Problem zu lösen.

Vielen Dank im voraus für Ihre Hilfe.Geben Sie hier die Bildbeschreibung ein

olammy
quelle
14
Ich hoffe, dass sie das eines Tages beheben. Dies sollte niemals passieren. ^^
itmuckel
1
Die richtige Lösung besteht darin, dass Anwendungen den Missbrauch von PATHUmgebungsvariablen stoppen . Die richtige Lösung gibt es seit fast zwei Jahrzehnten . Aber Entwickler dazu zu bringen, es zu benutzen, ist wie Zähne ziehen.
Ian Boyd

Antworten:

147

Wenn die PATH-Variable mit zu vielen Werten überladen wird, erreicht sie einen Punkt, an dem Sie keine Werte mehr hinzufügen können. Wenn Sie Folgendes versuchen, sollte Ihr Problem gelöst sein.

Lösung 1:

  1. Erstellen Sie eine neue Systemvariable mit dem Namen 'NEWPATH'.
  2. Weisen Sie den Speicherort des bin-Verzeichnisses 'NEWPATH' zu.
  3. Jetzt anhängen ' ; % NEWPATH% 'zur PATH-Variablen

Wenn dies immer noch nicht funktioniert, versuchen Sie, einen Teil der bereits vorhandenen Werte der PATH-Variablen in den 'NEWPATH' zu kopieren und dann den 'NEWPATH' anzuhängen.

Lösung 2:

Überprüfen Sie den Wert der Variablen PATH, wenn Sie die Pfade gruppieren und verkürzen können. Beispielsweise,

C: \ Programme \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C: \ Programme \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

kann kombiniert werden mit

C: \ Programme \ Microsoft SQL Server;

Auf diese Weise können Sie mehr Speicherplatz in Ihre PATH-Variable mit fester Länge einbauen und schließlich den Speicherort Ihres bin-Verzeichnisses in PATH anpassen.

Hoffe das hilft dir!

Swapnil Kamat
quelle
Ja, du bist sehr richtig. So viele Untersuchungen hatten gezeigt, dass die Pfadvariable nur 2048 Zeichen aufnehmen kann, und wenn die Zeichen diese Stufe erreichen, kann die Pfadvariable nicht mehr viel Zeichen aufnehmen. Also habe ich versucht, was Sie vorgeschlagen haben, und mir geht es jetzt gut. Vielen Dank
olammy
Danke dir! Das ist eine großartige Idee @ Lösung 1! Hätte selbst daran denken sollen ... :)
Dev-iL
2
Das funktioniert wie ein Zauber, danke! Bei der Verwendung muss man jedoch vorsichtig sein, setx PATHda %NEWPATH%dadurch die Zeichenfolge direkt aufgelöst wird und die resultierende Zeichenfolge erneut zu lang wird. Bei diesem Ansatz sollte also nur der Dialog und nicht die Befehlszeile verwendet werden
IceFire
1
@ SwapnilKamat Das funktioniert nicht ganz: Ich benutze miktex, es pdflatexmuss in sein PATH, wenn ich den Ort von pdflatexin eingebe, NEWPATHwird pdflatexes nicht mehr gefunden ("der Befehl pdflatexwird nicht erkannt" ...)
Olorin
7
Ironischerweise hat Microsoft SQL Server so viele Pfadvariablen festgelegt, dass allein der Speicherplatz fast voll ist. Ich habe eine PATHS_MSSQL-Variable erstellt und dann% PATHS_MSSQL% zur PATH-Variablen hinzugefügt, um ihren Platz einzunehmen. Es wurde viel Speicherplatz in der PATH-Variablen freigegeben.
Steve Lloyd
49

Es gibt nur wenige Möglichkeiten, Ihre Pfadvariable zu bereinigen. Am einfachsten ist es, den Rapid Environment Editor zu verwenden . Dieses kostenlose Dienstprogramm wird,

  1. Entfernen Sie die doppelten Pfade (Rechtsklick> Bereinigungspfade)
  2. Entfernen Sie nicht vorhandene Ordner (rot dargestellt, die Sie manuell löschen müssen).
  3. Ersetzen Sie lange Pfade durch kurze Pfade (Rechtsklick> langer bis kurzer Pfad).

Ich mache die obigen Schritte der Reihe nach und verwende den 3. Schritt nur für die längsten Pfade, bis die Größe der Pfadvariablen wieder die Kontrolle hat.

Wenn Sie fortgeschrittener werden möchten, finden Sie hier ein kleines C # -Tool , das Sie an jede andere Logik anpassen können, die Sie implementieren möchten.

Shital Shah
quelle
Bevor ich diesen Beitrag gelesen habe, hatte ich noch nie von einem der beiden Tools gehört, bin aber froh, dass ich es habe! Danke für das Teilen!
James Shaw
2
Dieses Tool ist fantastisch! MS sollte es zum offiziellen Editor machen, der mit Windows geliefert wird!
Burzum
35

Eine andere Lösung oder mehr eine Problemumgehung zur Umgehung der variablen Längenbeschränkung für den Umgebungspfad besteht darin, Ihren Pfad (Hinzufügen, Entfernen oder Aktualisieren) mithilfe eines PowerShellSkripts zu verwalten.

  1. Erfassen Sie die aktuelle PATH-Variable, indem Sie auf "Text bearbeiten" klicken (siehe Abbildung oben), kopieren Sie sie in Ihre Zwischenablage und speichern Sie sie als Backup in einer Textdatei, um böse Überraschungen zu vermeiden. Dies ist nicht obligatorisch, ermöglicht Ihnen jedoch die Wiederherstellung, falls etwas schief gehen sollte.

  2. Fügen Sie nach dem Sichern einer neuen PowerShell-Datei (.ps1) Folgendes hinzu (ändern Sie die erste Zeile unten mit den Ordnerpfaden, die Sie hinzufügen möchten (der Teil nach dem + -Zeichen):

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

    [Umgebung] :: SetEnvironmentVariable ("Pfad", $ newPath, "Maschine")

    $ env: Path = $ newPath

Auf diese Weise konnte ich meine (lange) PATH-Variable zurückbekommen, nachdem ich mit der Windows 10-Benutzeroberfläche gespielt hatte, von der Längenbeschränkung erfasst wurde und den größten Teil meines Pfades verlor. Ich hoffe, es hilft.

Sifou13
quelle
Danke .. Das war einfach. Neugierig, was der Unterschied zwischen der Wertzuweisung in Zeile 2 und 3 ist
Nayak
In Zeile 3 wird es in der aktuellen Sitzung festgelegt, in Zeile 2 wird es als Standard für den Computer festgelegt.
Tetsujin no Oni
2
PS funktioniert für längere Pfade, aber traditionell werden setx /m1048 Zeichen abgeschnitten :(. Sie können den Pfad auch im Texteditor bearbeiten und dies einfach tun [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine"). Sie benötigen eine Admin-Shell.
Shital Shah
Es ist möglich, PS zu verwenden, aber keine GUI. Hm, wie macht das Sinn? Upvoted, danke!
Legenden
9

Beachten Sie, dass Sie zusätzlich zur Antwort von Swapnil die maximale Länge der Pfadvariablen ändern können, die ansonsten auf 2048 Zeichen begrenzt ist (während ein einzelner Pfad eine historische Grenze von 206 Zeichen hat). In Windows 10 erreichen Sie dies, indem Sie den LongPathsEnabledRegistrierungsschlüssel auf 1 setzen. Diese finden Sie hier:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Um den Registrierungs - Editor zuzugreifen: Windows Key+RGeben Regedit.

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

Schauen Sie sich auch diese SuperUser-Antwort an: https://superuser.com/a/1119980/327009

Adressierung des folgenden Kommentars: Der Fehler "Umgebungsvariable ist zu groß" bezieht sich auf die gesamte Variable und nicht auf den einzelnen Pfad, der gerade hinzugefügt wird.

alexlomba87
quelle
19
Ist das ein genauer Rat? Die maximale Länge der PATH-Variablen (dh die Verkettung mehrerer Pfade ) beträgt 2048 Zeichen. 260 Zeichen, die Sie erwähnt haben, sind die maximale Länge eines Pfades . Sie sind verwandt, aber nicht gleich.
Hendy Irawan
7

Späte Antwort, aber ich suchte nach etwas Ähnlichem und landete hier. Ich habe alle Pfade zu Variablen für Programmdateien und Programmdaten geändert (dieser speichert wie 1 Zeichen, obwohl nicht so wichtig).

Für so etwas wie nodejs habe ich den normalen Pfad von geändert

C: \ Programme \ nodejs \

zu

% ProgramFiles% \ nodejs \

Dies kann auch mit "C: \ Programme (x86)" und "% ProgramFiles (x86)%" erfolgen.

Es hat mir ein paar Charaktere erspart, aber genug, dass ich mich nicht mehr beschwere.

Bryan
quelle
7
Warum nicht einfach% x86% verwenden, um "C: \ Programme (x86)" zu ersetzen, und% x64%, um "C: \ Programme" zu ersetzen, scheint eine viel bessere Möglichkeit zu sein, den Zeichenaufwand zu reduzieren.
Xorcist
1
@Xorcist - schön! Hatte keine Ahnung davon
mark1234
Ich glaube nicht, dass sie standardmäßig existieren, aber Sie können sie selbst erstellen.
Gabriel Fair
Das hat mir auch gefallen, ich habe% PF% für "c: \ Program FIles" erstellt und es ungefähr 20 Mal verwendet, um den Pfad genug zu verkürzen.
LaBracca
@Xorcist Wie wird das gemacht, indem eine andere Variable erstellt wird?
Demodave
5

Ich habe festgestellt, dass Sie dies über PowerShell tun können.

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

Also griff ich nach dem vorhandenen Systempfad, fügte ihn in den Editor ein, fügte mein neues Ding hinzu und fügte ihn dann in das oben genannte Bit "C: \ Programme" ein. Pfad aktualisiert. Getan.

SEIN
quelle
4

Versuchen Sie, zu ändern regedit, in meinem Fall funktioniert es, wenn die Länge mehr als 3000 beträgt.

Drücken Sie Win + Rund regeditdrücken Sie die Eingabetaste , um regedit zu öffnen. Gehen Sie zu Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentund ändern Sie den Wert PathIhres Pfades. Und Computer neu starten, sollte es funktionieren.

Yu Yang Jian
quelle
1
Das funktioniert gut für mich. Ich denke, es ist einfacher als andere Methoden.
Shalitha Senanayaka
1

Problemumgehung:

Bitte starten Sie das System neu. Nach dem Neustart des Systems ist PATH nicht mehr leer, kann jedoch auf 2047 (4095) Zeichen gekürzt werden. Wenn der Neustart des Systems nicht hilft, bitte:

Starten Sie c: \ windows \ system32 \ regedit.exe Wechseln Sie zur Registrierungsstruktur "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment". Bereinigen Sie unnötige Verzeichnisse mit dem Schlüssel "Path". Starten Sie das System neu

Hinweis: In einigen Ausnahmefällen, wenn das System nicht gestartet werden kann, bitte:

Im abgesicherten Modus anmelden Öffnen Sie die Eingabeaufforderungsshell und geben Sie Folgendes ein: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Pfad / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / f

Für weitere Informationen: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

LeoZ
quelle
Wie kann man das Limit auf mindestens erhöhen 4095?
Dan M.
1

Zusätzlich zu anderen Methoden (z. B. Powershell) habe ich eine nette GUI gefunden, "Rapid Environment Editor", die größere Textwerte verarbeiten kann.

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

Amir
quelle
0

Anscheinend wird Rapid Environment Editor dies für Sie tun (aus der Antwort von @shatil_shah), aber Sie können auch die Pfade zu ihrer "8dot3" -Version verkürzen. Mit nur diesen beiden Ersatzteilen erhalten Sie eine Menge Kilometer:

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

Wenn Sie Ihren aktuellen Pfad in Notepad kopieren, suchen und ersetzen Sie ihn zuerst C:\Program Files (x86)und dann C:\Progam Files.

bfris
quelle
-3

Workarround. Verwenden Sie Text bearbeiten und bearbeiten Sie Ihren PFAD in einem Texteditor

Christoph Adamakis
quelle
2
Ich versuche deinem Rat zu folgen. In welcher Datei sind die Umgebungsvariablen auf meinem Computer gespeichert?
Gabriel Fair
Es ist nur Text. Öffnen Sie es mit Notizblock
Christoph Adamakis
@GabrielFair Sie mussten auf die aufgerufene Schaltfläche klicken Edit Text, anstatt eine Datei zu öffnen.
AlexMelw