Windows 10'da Ortam Değişkeni çok büyük


147

Bunun garip olduğunu biliyorum ve neredeyse 3 gün çevrimiçi bir çözüm aramak için yararlı bir çözüm bulmadan geçirdim. Bu yüzden buraya gelmeye karar verdim.

Son zamanlarda Windows 8.1'den Windows 10'a geçtim.

Şimdi yeni Apache Maven kurulumum için bir Ortam değişkeni ayarlamak istedim.

Kullanıcı değişkenini her oluşturduğumda işler iyi gidiyor. Ancak, ben de "değişken" olarak kullanıcı değişkeninde oluşturmak değişken değişken bin dizin eklemek gerekir sistem değişkeni oluşturmanız gerekir.

Şimdi, bunu her yaptığımda "Bu Ortam Değişkeni çok büyük." Bunun sonucunda yolu oluşturamıyorum.

Bu hatanın resmini ekledim.

Bu sorunu çözmem için bana yardımcı olabilecek biri varsa bunu takdir edeceğim.

Yardımınız için şimdiden teşekkürler.resim açıklamasını buraya girin


14
Umarım bir gün bunu düzeltirler. Bu asla olmamalı. ^^
itmuckel

1
Doğru çözüm, uygulamaların PATHortam değişkenini kötüye kullanmayı durdurması içindir . Doğru çözüm neredeyse yirmi yıldır var olmuştur . Ancak geliştiricilerin bunu kullanması diş çekmek gibidir.
Ian Boyd

Yanıtlar:


148

PATH değişkeni çok fazla değerle aşırı yüklendiğinde, artık değer ekleyemeyeceğiniz bir noktaya ulaşır. Aşağıdakileri denemek sorununuzu çözmelidir.

Çözüm 1:

  1. 'NEWPATH' diyen yeni bir sistem değişkeni oluşturun
  2. Bölme dizini konumunu 'NEWPATH' a atayın
  3. Şimdi ekleyin ' ; % NEWPATH% ', PATH değişkenine

Bu hala işe yaramazsa, PATH değişkeninin zaten mevcut olan değerlerinin bir kısmını 'NEWPATH' öğesine kopyalamaya çalışın ve ardından 'NEWPATH' öğesini ekleyin.

Çözüm 2:

Yolları gruplandırabilir ve kısaltabiliyorsanız PATH değişkeninin değerini kontrol edin. Örneğin,

C: \ Program Dosyaları \ Microsoft SQL Server \ 102 \ Araçlar \ Binn \; C: \ Program Dosyaları \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

birleştirilebilir

C: \ Program Dosyaları \ Microsoft SQL Server;

Bu şekilde sabit uzunluklu PATH değişkeninize daha fazla alan oluşturabilir ve son olarak bin dizininizin konumunu PATH olarak ayarlayabilirsiniz.

Umarım bu size yardımcı olur!


Evet, çok haklısın. O kadar çok araştırma bana yol değişkeninin sadece 2048 karakter alabileceğini gösterdi ve karakterler bu aşamaya geldiğinde, yol değişkeni artık çok fazla karakter alamayacak. Bu yüzden önerdiklerini denedim ve şimdi iyiyim. Thank you
olammy

Teşekkür ederim! Bu harika bir fikir @ çözüm 1! Bunu kendim düşünmeliydim ... :)
Dev-iL

2
Bu bir cazibe gibi çalışıyor, teşekkür ederim! Bununla birlikte, kullanırken setx PATHdoğrudan dikkatli olunmalıdır, çünkü bu doğrudan çözülecektir %NEWPATH%ve ortaya çıkan dize bir kez daha çok uzun olacaktır ... Bu nedenle, bu yaklaşımı kullanarak komut satırını değil, yalnızca iletişim kutusunu kullanmalısınız
IceFire

1
Bu tamamıyla işi değil @SwapnilKamat: Ben MiKTeX kullanıyorum, onun pdflatexsahip olmasını PATHben konumunu koyarsanız, pdflatexiçinde NEWPATH, pdflatexartık bulunamadı değil ( "komutu pdflatextanınmaz" ...)
Olorin

7
İronik bir şekilde, Microsoft SQL Server o kadar çok yol değişkeni ayarladı ki tek başına neredeyse alanı kaplıyor. Bir PATHS_MSSQL değişkeni oluşturdum ve sonra yerlerine geçmek için PATH değişkenine% PATHS_MSSQL% ekledim. PATH değişkeninde çok fazla alan bıraktı.
Steve Lloyd

49

Yol değişkeninizi temizlemenin birkaç yolu vardır. En kolayı Rapid Environment Editor'ı kullanmaktır . Bu ücretsiz yardımcı program,

  1. Yinelenen yolları kaldırın (sağ tıklama> Yolları Temizle)
  2. Var olmayan klasörleri kaldırın (manuel olarak silmeniz gereken kırmızı renkte gösterilir)
  3. Uzun yolları kısa yollarla değiştirin (sağ tıklama> uzun - kısa yol).

Yukarıdaki adımları sırayla yapmak ve yol değişken boyutu yeniden denetimine kadar 3 adım yalnızca en uzun yollar için kullanın.

Daha ileri gitmek istiyorsanız, uygulamak istediğiniz diğer mantığa göre değiştirebileceğiniz küçük C # aracı .


Bu yazıyı okumadan önce, iki araçtan birini hiç duymamıştım ama sevindim! Paylaşım için teşekkürler!
James Shaw

2
Bu araç harika! MS, pencerelerle birlikte gelen resmi editör yapmalıdır!
burzum

35

Ortam PATH değişken uzunluk sınırını atlamak için başka bir çözüm veya daha fazla geçici çözüm, bir PowerShellkomut dosyası kullanarak yolunuzu yönetmektir (ekleme, kaldırma veya güncelleme) ;

  1. "Metni Düzenle" (yukarıdaki ekran görüntüsüne bakın) tıklayarak mevcut PATH değişkenini yakalayın ve panoya kopyalayın ve kötü sürprizlerden kaçınmak için bir metin dosyasına da yedek olarak kaydedin. Bu zorunlu değildir, ancak bir şeyler ters giderse iyileşmenizi sağlayacaktır.

  2. Artık yedeklendiğine göre, aşağıdakileri yeni bir PowerShell (.ps1) dosyasına ekleyin (aşağıdaki ilk satırı eklemek istediğiniz klasör yollarıyla (+ işaretinden sonraki kısım) değiştirerek):

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

    [Environment] :: SetEnvironmentVariable ("Yol", $ newPath, "Makine")

    $ env: Yol = $ newPath

Bu, Windows 10 UI ile oynadıktan, uzunluk sınırlamasına yakalanıp yolumun çoğunu kaybederek (uzun) PATH değişkenimi geri almayı başardım. Umut ediyorum bu yardım eder.


Teşekkürler .. Bu kolaydı. Merakla, 2. ve 3. satırlarda değer atama arasındaki fark nedir
Nayak

Satır 3 geçerli oturumda, satır 2 ise makinenin varsayılanı olarak ayarlar.
Tetsujin no Oni

2
PS daha uzun bir yol için çalışıyor, ancak geleneksel setx /m1048 karaktere kesiyor :(. Yolu metin düzenleyicide de düzenleyebilir ve sadece yapabilirsiniz [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine"). Yönetici kabuğuna ihtiyacınız olacak.
Shital Shah

PS kullanmak mümkündür ancak GUI kullanamazsınız. Hm, bu nasıl bir anlam ifade ediyor? Oy verildi, teşekkürler!
Efsaneler

11

Swapnil'in cevabına ek olarak, yol değişkeninin maksimum uzunluğunu değiştirebileceğinizi unutmayın - aksi takdirde 2048 karakterle sınırlıdır (tek bir yolun 206 karakterlik bir tarihsel sınırı varsa). Windows 10'da, LongPathsEnabledkayıt defteri anahtarını burada bulunan 1 olarak ayarlayarak bunu elde edersiniz :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Kayıt defteri düzenleyicisine erişmek için: Windows Key+Ryazın Regedit.

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

Ayrıca bu SuperUser yanıtına da göz atın: https://superuser.com/a/1119980/327009

Aşağıdaki yorumu ele almak: "Ortam değişkeni çok büyük" hatası, şu anda eklenmekte olan tek yolla değil, tüm değişkenle ilgilidir.


19
Bu doğru bir tavsiye mi? PATH değişkeninin maksimum uzunluğu (yani , birden çok yolun birleştirilmesi ) 2048 karakterdir. Bahsettiğiniz 260 karakter, bir yolun maksimum uzunluğudur . İlişkililer ama aynı değiller.
Hendy Irawan

7

Geç cevap ama ben benzer bir şey arıyordum ve burada sona erdi. Program dosyaları ve program verileri için değişkenlerin tüm yollarını değiştirdim (bu önemli değil, 1 karakter gibi kaydeder).

Düğüm gibi bir şey için, normal yolunu değiştirdim.

C: \ Program Dosyaları \ nodejs \

için

% ProgramDosyaları% \ nodejs \

Bu, "%: ProgramFiles (x86)% \" kullanılarak "C: \ Program Files (x86) \" ile de yapılabilir.

Bana birkaç karakter kurtardı ama yeterince şikayet hissediyorum durdu hissediyorum.


7
Neden sadece "C: \ Program Files (x86)" yerine% x86% ve "C: \ Program Files" yerine% x64 kullanmıyorsunuz, bu karakter ek yükünü azaltmanın çok daha iyi bir yolu gibi görünüyor.
Xorcist

1
@Xorcist - iyi biri! Bunlar hakkında hiçbir fikrim yoktu
mark1234 26:17

Varsayılan olarak var olduklarını sanmıyorum ama siz kendiniz oluşturabilirsiniz.
Gabriel Fuarı

Ben de böyle yaptım, "c: \ Program FIles" için% PF% oluşturdum ve yaklaşık 20 kez kullanarak bana yolu yeterince kısaltmak için izin verdi.
LaBracca

@Xorcist başka bir değişken oluşturarak bu nasıl yapılır?
demodave

5

PowerShell ile yapabileceğinizi buldum.

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

Bu yüzden mevcut sistem PATH'ı yakaladım, not defterine yapıştırdım, yeni bir şey ekledim, sonra yukarıdaki "C: \ Program Files" bitine yapıştırdım. Yol güncellendi. Bitti.


4

Değiştirmeyi dene regedit, benim durumumda uzunluk 3000'den fazla olduğunda çalışır.

Regedit'i açmak için tuşuna basın Win + Rve girin regedit. Adresine gidin Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentve Pathyolunuzun değerini değiştirin . Ve bilgisayarı yeniden başlatın, işe yaramalı.


1
Bu benim için iyi çalıştı. Diğer yöntemlerden daha kolay olduğunu düşünüyorum.
shalitha senanayaka

1

Çözüm:

Lütfen sistemi yeniden başlatın. Sistemi yeniden başlattıktan sonra PATH artık boş değil, ancak 2047 (4095) karaktere kısaltılabilir Sistemin yeniden başlatılması yardımcı olmazsa lütfen:

Başlat c: \ windows \ system32 \ regedit.exe "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" kayıt defteri kovanına gidin "Path" anahtarından gereksiz dizinleri temizleyin Sistemi yeniden başlatın

Not: Bazı istisnai durumlarda sistem başlatılamazsa lütfen:

Güvenli modda oturum açın Komut istemi kabuğunu açın ve şunu yazın: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Yol / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / f

Daha fazla ayrıntı için: https://software.intel.com/tr-tr/articles/limitation-to-the-length-of-the-system-path-variable


Limit en azından nasıl artırılır 4095?
Dan M.


0

Görünüşe göre Rapid Environment Editor bunu sizin için yapacak (@shatil_shah cevabından), ancak "8dot3" sürümüne giden yolları da kısaltabilirsiniz. Sadece bu iki değiştirmeyle çok fazla kilometre alacaksınız:

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

Eğer Not Defteri'ne mevcut yolu kopyalarsanız ilk arama ve değiştirme C:\Program Files (x86)sonra ve C:\Progam Files.


0

Silebileceğiniz alakasız yollar olup olmadığını görmek için değişkenlerinizi gözden geçirmeyi de deneyebilirsiniz. Bu, başka veya daha fazla değişken eklemeniz için biraz alan açacaktır.


-3

Workarround. Metin Düzenleme'yi kullanın ve PATH'nizi bir metin Düzenleyicide düzenleyin


2
Tavsiyeni takip etmeye çalışıyorum. Bilgisayarımda çevresel değişkenler hangi dosyada saklanıyor?
Gabriel Fuarı

sadece metindir. Not defteri kullanarak açın
Christoph Adamakis

@GabrielFair Bir Edit Textdosyayı açmak yerine adlı düğmeye tıklamanız gerekiyordu .
AlexMelw
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.