Terlalu banyak folder dalam variabel path

15

Saya mengalami masalah aneh - saya tidak bisa meluncurkan Visual Studio, atau menjalankan perintah sederhana dari command prompt, tampaknya karena variabel PATH saya terlalu panjang. Sekarang saya melihatnya, saya melihat bahwa banyak perusahaan telah menambahkan direktori instal mereka ke variabel PATH.

Saya bertanya-tanya mengapa perusahaan-perusahaan ini menambahkan folder mereka ke jalur (mungkin untuk membuatnya lebih mudah untuk menjalankan program mereka?), Dan mana yang perlu dan yang bisa saya hapus. Jika saya menghapus beberapa dari mereka, apakah saya tidak dapat meluncurkan program? ( Inilah yang saat ini ada di jalur)

CC Inc
sumber
1
Aku benar-benar tidak merasa itu terlalu lama PATH... Apa yang membuatmu curiga bahwa itu terlalu lama? Apakah VS melempar kesalahan? Juga, versi Windows apa yang Anda jalankan?
bosco
@ bosco Saya menduga itu terlalu lama karena command prompt tidak dapat menemukan perintah sederhana seperti ping. Juga, sepertinya ini tidak biasa dengan studio visual . Disebutkan juga di sini bahwa batas untuk PATH yang menggunakan baris perintah adalah sekitar 2000.
CC Inc
Visual studio 2012 melempar kesalahan "Pengecualian telah dilemparkan oleh target doa" pada startup. Dan ketika saya melihat di ActivityLog.xml, ia memberi tahu sayaThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc
2
Segala macam peretasan dan solusi dalam jawaban yang diterima dari pertanyaan Stack Overflow # 4405091 :)
bosco

Jawaban:

13

adalah mungkin untuk mengurangi jumlah path yang berlebihan dalam variabel lingkungan PATH, cukup simpan seluruh baris ke notepad, sebagai cadangan dan hapus beberapa dan uji.

Sebagian besar dari mereka ada di sana sehingga jika jalan pintas tidak memiliki jalur lengkap yang ditetapkan untuk "Target", Jika "Start In" tidak diatur dalam jalan pintas dengan benar atau peluncuran dilakukan dengan aneh, program mereka dan bagian dan potongannya selalu ditemukan. Ini adalah Failsafe dalam sebagian besar situasi. Anda masih ingin menguji sepenuhnya penggunaan program apa pun yang Anda hapus jalurnya.
Ini juga sangat berguna bagi orang yang mengetik perintah ke dalam CMDprompt, bahkan tanpa CD, komputer akan memindai setiap lokasi, sampai sebuah program dengan nama itu ditemukan dan dijalankan. Atau perintah lain dengan nama yang sama :-)

Kumpulan jalur itu WS (anchient) terbatas pada kurang dari 255 (or260) charachters, yang berubah menjadi 1024 beberapa waktu yang lalu, kemudian ditambal kembali di era server'03 untuk menangani 2048, dan konon bisa menangani 8.096 pada beberapa sistem, bahkan zaman dahulu.

Keterbatasan nyata yang ditemukan hari ini bahwa orang mengalami, adalah dalam CMDprompt yang memiliki batas pada panjang string perintah, yang meliputi perluasan variabel dan jalur.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx di sini Microsoft mengatakan:

"Ukuran maksimum variabel lingkungan yang ditentukan pengguna adalah 32.767 karakter. Tidak ada batasan teknis pada ukuran blok lingkungan. Namun, ada batas praktis tergantung pada mekanisme yang digunakan untuk mengakses blok. Misalnya, file batch tidak dapat menetapkan variabel yang lebih panjang dari panjang baris perintah maksimum. "

Di lokasi itu ^ mereka menunjuk ke lokasi registri yang berisi jalur sistem. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment Harus membaca sisanya di sana.

CMDprompt dan batasan batch 2048 charachters pernah diperluas, dan dikatakan 4x itu untuk sistem yang lebih baru (perlu kutipan karena orang tidak melihat itu)

Juga lihat http://support.microsoft.com/kb/830473 , yang membahas command prompt dan panjang kumpulan untuk sistem yang lebih lama.

Untuk memastikan bahwa entri sudah benar di sana, wiki ini mengatakan:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Variabel ini berisi daftar direktori koma yang dibatasi ( jangan menaruh spasi di antaranya ) di mana penerjemah perintah akan mencari file yang dapat dieksekusi yang cocok dengan perintah yang diberikan. Variabel lingkungan yang mewakili jalur dapat bersarang di dalam variabel PATH tetapi hanya pada satu tingkat tipuan. Jika variabel lingkungan subpath ini sendiri berisi variabel lingkungan yang mewakili path, PATH tidak akan berkembang dengan baik dalam substitusi variabel.

Memiliki semua jalur tambahan di sana memperlambat hal-hal tertentu dengan sedikit, karena kemudian dipaksa untuk melihat di semua tempat itu, sebelum menyerah. Menggunakan path lengkap setiap kali memanggil item file akan selalu lebih cepat, bahkan ketika batching atau menggunakan CMDprompt.

Menggunakan konvensi DOS 8.3 seperti lama adalah salah satu cara untuk mengecilkan ukuran, Batch ini /programming//a/20362922 berfungsi dengan baik. pastikan (lagi) untuk membuat cadangan string asli. Lihat juga kemungkinan solusi lain pada pertanyaan itu.

Begini penampilan saya, lebih buruk.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Program Files (x86) \ QuickTime \ QTSystem \

Saya akan membuang waktu dengan cepat dalam sekejap, dan program AMDs telah membuat jalur yang panjang di sana sebelumnya, melemparkannya, Adobee memilikinya, tidak ada yang penting untuk metode pintas / ikon GUI standar. Banyak hal yang bisa dihapus, lalu uji semua fungsi. Jika Anda memanggil sesuatu dengan mengetikkan perintah CMD, maka menghapus jalur tersebut tidak akan berfungsi.

Psycogeek
sumber
Jadi Anda mengatakan bahwa aplikasi tidak akan gagal jika saya menghapus jalurnya?
CC Inc
Windows 7 64-bit
CC Inc
Apakah ada sesuatu di sana yang Anda tahu sudah dihapus? Keluarkan Qt, AMd Dan Nividia, (setelah Anda mendukungnya) mabey dan lihat apakah itu cukup pendek? Saya memposting milik saya, sekitar 140 karakter.
Psycogeek
Oke, saya akan lihat ..
CC Inc
3
Batasannya tampaknya 2048 karakter . Setelah itu, saya tidak bisa memasukkan karakter lagi ke GUI Variabel Lingkungan.
Mateen Ulhaq
9

Saya memiliki beberapa variabel lingkungan terkait pengembangan perangkat lunak di jalur saya, yang semuanya penting.

Solusi di atas tidak akan bekerja untuk saya, jadi saya pergi untuk persimpangan direktori :

  • Pilih beberapa jalur terpanjang di PATH saya (Suka C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Buat folder kecil untuk menyimpan persimpangan saya: c: \ d \
  • Buat persimpangan pendek untuk jalur panjang:

mklink / jc: \ d \ sql "C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \"

Melakukan itu pada 15 jalur mengurangi PATH saya dari 2045 menjadi 1285 karakter.

Ini mungkin menjadi masalah ketika Anda akhirnya menghapus barang-barang dari mesin Anda karena persimpangan akan tetap ada di jalur dan Anda harus membersihkannya secara manual.

Juliano
sumber
1
Saya memiliki lingkungan dev yang cukup khas, VS + terbaru beberapa versi lama dan SQL server diinstal. Sejauh ini, ini adalah solusi terbaik. Jawaban yang diterima untuk membuang jalan keluar adalah konyol.
Mesh
Apa yang Anda ubah entri lintasan registri untuk C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ to? c: \ d \ sql?
OutOFTouch
Jika Anda maksud variabel lingkungan PATH maka ya. Saya tidak mengacaukan referensi lain ke direktori SQL Server.
Juliano
Berikut ini adalah tutorial kecil yang bagus tentang tautan keras: howtogeek.com/howto/16226/…
ofer.sheffer
1

Sementara maksimum yang diijinkan dalam path jauh lebih lama, saya telah menemukan pada jawaban otoritatif Stack Overflow pada topik ini (dan referensi Microsoft) yang menyatakan bahwa nilai jalur maksimum yang diperluas 2048 byte akan bekerja, dan apapun yang lebih lama dari itu akan menyebabkan masalah. Dengan "diperluas" maksud saya bahwa setiap variabel yang dilambangkan dengan% pembatas akan memiliki nilainya dimasukkan menjadi nilai yang diperluas, dan total panjang yang diperluas tidak boleh melebihi 2048 byte. Saya perhatikan bahwa jenis masalah yang ditimbulkannya (pada Windows 7) adalah:

  • Tidak mengenali jalur di akhir nilai
  • Instalasi perangkat lunak atau tambalan yang mengubah nilai PATH menyebabkan nilai runtime menjadi NULL, sehingga menyebabkan semua jenis masalah yang menjalankan Windows, seperti semua ikon Start Menu, Desktop, dan Task Bar Anda kehilangan gambar, dan perintah prompt perintah sederhana seperti " ping "atau" ipconfig "menunjukkan perintah yang tidak dikenali kesalahan
  • Program aplikasi yang mengandalkan nilai PATH gagal

Secara pribadi, saya merekomendasikan sistem operasi lain selain Windows, tetapi jika Anda terjebak di atasnya, maka Anda harus menghabiskan waktu Anda menghapus entri path, menguji untuk memastikan tidak merusak apa pun, dan mendapatkan nilai path ke 2048 byte.

Jay Imerman
sumber
Tidak jelas bagaimana ini menjawab pertanyaan penulis, setidaknya lebih, maka jawaban yang ada lakukan, yang memberikan bukti aktual untuk membuat cadangan pernyataan mereka.
Ramhound