Yol değişkeninde çok fazla klasör var


15

Garip bir sorunla karşılaştım - görünüşte PATH değişkenimin çok uzun olması nedeniyle Visual Studio'yu başlatamıyorum ya da komut isteminden basit komutları çalıştıramıyorum. Şimdi bakıyorum, birçok şirketin kurulum dizinlerini PATH değişkenine eklediğini görüyorum.

Bu şirketlerin klasörlerini neden yola eklediğini (belki de programlarını yürütmeyi kolaylaştırmak için?) Ve hangilerinin gerekli ve hangisini silebileceğini merak ediyordum . Bazılarını silersem, programları başlatamayacak mıyım? ( Yolda şu anda neler var)


1
Gerçekten bu kadar uzun hissetmiyorum PATH... Çok uzun olduğundan şüphelenmenize ne neden oluyor? VS bir tür hata mı atmaktadır? Ayrıca, hangi Windows sürümünü kullanıyorsunuz?
bosco

@bosco Çok uzun olduğundan şüpheliyim çünkü komut istemi gibi basit komutları bulamıyor ping. Ayrıca, bu görsel stüdyo ile nadir değildir . Burada komut satırı kullanan PATH sınırının 2000 civarında olduğu da belirtilmiştir .
CC Inc

Visual studio 2012, başlatma sırasında "İstisna hedefi tarafından atıldı" hatasını atar. ActivityLog.xml dosyasına baktığımda bana söylediThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

Yanıtlar:


13

PATH ortam değişkenlerindeki aşırı yol miktarını azaltmak mümkündür, sadece tüm satırı bir not defterine bir yedek olarak kaydedin ve bazılarını kaldırın ve test edin.

Birçoğu oradadır, bu yüzden bir kısayolun "Hedef" için ayarlanmış bir tam yolu yoksa, "Başla" kısayolda doğru şekilde ayarlanmamışsa veya bir başlatma işlemi garip bir şekilde yapılırsa, onların programı ve parçaları ve parçaları her zaman bulundu. Çoğu durumda bir Arızadır. Yine de, yollarını kaldırdığınız herhangi bir programın tüm kullanımını test etmek istersiniz.
Ayrıca, CD olmadan bile CMD komutuna komutlar yazanlar için çok kullanışlıdır, bilgisayar bu adda bir program bulunup çalıştırılana kadar her konumu tarar. Veya aynı ada sahip başka bir komut :-)

Bu yol kümesi WAS (eski) 255 (veya 260) karakterden daha azıyla sınırlıydı, bir süre önce 1024'e döndü, daha sonra 2048'i işlemek için sunucuya03 döneminde geri yamalandı ve hatta bazı sistemlerde 8096'yı işleyebiliyordu. uzun zaman önce.

Günümüzde insanların karşılaştığı gerçek sınırlamalar, komut dizesinin uzunluğu üzerinde, değişkenlerin ve yolların genişlemesini içeren bir sınırlama olan CMDprompt'tadır.

http://msdn.microsoft.com/tr-tr/library/windows/desktop/ms682653(v=vs.85).aspx burada Microsoft diyor:

"Kullanıcı tanımlı bir ortam değişkeninin maksimum boyutu 32.767 karakterdir. Ortam bloğunun boyutuyla ilgili herhangi bir teknik sınırlama yoktur. Ancak, bloğa erişmek için kullanılan mekanizmaya bağlı olarak pratik sınırlamalar vardır. Örneğin, bir toplu iş dosyası maksimum komut satırı uzunluğundan daha uzun bir değişken ayarlayamaz. "

Bu konumda ^ sistem yollarını içeren kayıt defteri konumuna işaret ederler HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment . Geri kalanını orada okumalıdır.

CMDprompt ve toplu sınırlama, bir kez genişletildiğinde 2048 karakterdir ve daha yeni sistemler için 4x olduğu söylenir (insanlar bunu görmediği için alıntıya ihtiyaç vardır)

Ayrıca , eski sistemler için komut istemini ve toplu uzunluğu tartışan http://support.microsoft.com/kb/830473 adresine bakın .

Girişlerin orada doğru olduğundan emin olmak için, Wiki'de şunu söyleyebilir:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Bu değişken, noktalı virgülle ayrılmış ( aralarına boşluk koymayın ) komut yorumlayıcısının verilen komutla eşleşen yürütülebilir bir dosyayı arayacağı dizin listesini içerir. Yolları temsil eden ortam değişkenleri, PATH değişkeni içinde iç içe geçebilir, ancak sadece bir dolaylı dolaylama seviyesinde olabilir. Bu alt yol ortam değişkeninin kendisi bir yolu temsil eden bir ortam değişkeni içeriyorsa, PATH değişken ikamesinde düzgün şekilde genişlemez.

İçindeki tüm ekstra yollara sahip olmak, bazı şeyleri biraz yavaşlatır, çünkü daha sonra vazgeçmeden önce tüm bu yerlere bakmak zorunda kalır. CMDprompt'u topluyorken veya kullanırken bile dosya öğelerini çağırırken tam yolların kullanılması her zaman daha hızlı olacaktır.

Eski DOSlike 8.3 kurallarını kullanmak, boyutu küçültmenin bir yoludur, bu Toplu /programming//a/20362922 iyi çalışır. orjinal dizeyi yedeklediğinizden emin olun (tekrar). Ayrıca bu sorudaki diğer olası çözümlere de bakın.

Benimki böyle görünüyor, daha kötüydü.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Program Dosyaları (x86) \ QuickTime \ QTSystem \

Ben bir kalp atışı içinde hızlı zaman atmak istiyorum, ve AMD programları daha önce orada genişletilmiş bir yol koydu, attı, Adobee biri vardı, bunların hiçbiri standart GUI kısayol / simge yöntemleri için önemli değildi. Birçok şey kaldırılabilir, ardından tüm işlevleri test edebilirsiniz. CMD istemine yazarak bir şeyler çağırırsanız, bu yolları kaldırmak işe yaramaz.


Yani uygulamalar olacağını söylüyor değil ben yolları kaldırırsanız başarısız?
CC Inc

Windows 7 64 bit
CC Inc

İçinde zaten kaldırıldığını bildiğiniz bir şey var mı? Qt, AMd ve Nividia'yı çıkarın (yedekledikten sonra) mabey ve o zaman yeterince kısa olup olmadığını görün? Benimkini postaladım, yaklaşık 140 karakter.
Psycogeek

Tamam, göreceğim ..
CC Inc

3
Sınırlama 2048 karakterdir . Bu noktadan sonra Ortam Değişkenleri GUI'sine başka karakter giremiyorum.
Mateen Ulhaq

9

Yolumda hepsi önemli olan yazılım geliştirme ile ilgili çeşitli ortam değişkenlerim var.

Yukarıdaki çözüm benim için işe yaramaz, bu yüzden dizin kavşakları için gittim :

  • PATH'imdeki en uzun yollardan bazılarını seçin (Beğen C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Kavşaklarımı saklamak için küçük bir klasör oluştur: c: \ d \
  • Uzun yollar için kısa kavşaklar oluşturun:

mklink / jc: \ d \ sql "C: \ Program Dosyaları (x86) \ Microsoft SQL Server \ 100 \ Araçlar \ Binn \ VSShell \ Common7 \ IDE \"

Bunu 15 yolda yapmak PATH'ımı 2045'ten 1285 karaktere düşürdü.

Nihayet bir şeyler makinenizden kaldırdığınızda bir sorun olabilir, çünkü kavşaklar yolda kalır ve bunları manuel olarak temizlemeniz gerekir.


1
Oldukça tipik bir dev ortamı, en son VS + birkaç eski sürümü ve SQL sunucusu yüklü. Bu, şimdiye kadar en iyi çözüm oldu. Patikaları atmak için kabul edilen cevap çok saçma.
Mesh

C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ için kayıt defteri yolu girdisini neyle değiştirdiniz? c: \ d \ sql?
OutOFTouch

PATH ortam değişkenini kastediyorsanız, evet. SQL Server'ın dizinleri ile ilgili başka referanslarla uğraşmadım.
Juliano

İşte zor bağlantılar hakkında güzel bir küçük öğretici: howtogeek.com/howto/16226/…
ofer.sheffer

1

Yolda izin verilen maksimum değer çok daha uzun olsa da, bu konuda (ve Microsoft başvurularında) Stack Overflow yetkili yanıtlarında, maksimum genişletilmiş yol değerinin 2048 baytın çalışacağını ve bundan daha uzun bir şeyin sorunlara neden olacağını belirttim. "Genişletilmiş" ile ifade etmek gerekirse,% sınırlayıcılarla gösterilen değişkenlerin genişletilmiş değer olmak için değerlerinin eklenmesi ve toplam genişletilmiş uzunluğun 2048 baytı aşmaması gerekir. (Windows 7 itibariyle) neden olduğu sorunların türleri olduğunu fark ettim:

  • Değerin sonundaki yolları tanımıyor
  • PATH değerini değiştiren yazılım veya düzeltme eklerinin yüklenmesi, çalışma zamanı değerinin NULL olmasına neden olarak, tüm Başlat Menüsü, Masaüstü ve Görev Çubuğu simgeleriniz gibi Windows çalıştıran tüm sorunların resimlerini kaybetmesine ve " ping "veya" ipconfig "show command tanınmayan hatalar
  • PATH değerlerine dayanan uygulama programları başarısız

Şahsen, Windows'un yanı sıra diğer işletim sistemlerini de öneririm, ancak üzerinde takılı kalırsanız, saatlerinizi yol girişlerini kaldırarak, hiçbir şey kırmadığından emin olmak için test ederek ve yol değerini 2048 bayta düşürmek için harcamanız gerekir.


Bunun, yazarın sorusuna, en azından daha fazla, mevcut cevapların, cevaplarını yedeklemek için gerçek kanıt sağlayan nasıl cevapladığı açık değildir.
Ramhound
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.