Variabel Lingkungan terlalu besar pada Windows 10

147

Saya tahu ini aneh dan saya telah menghabiskan hampir 3 hari mencari solusi online tanpa mendapatkan yang berguna. Jadi saya memutuskan untuk datang ke sini.

Saya baru saja memutakhirkan ke Windows 10 dari Windows 8.1.

Sekarang saya ingin menetapkan variabel Lingkungan untuk instalasi baru saya dari Apache Maven.

Setiap kali saya membuat variabel pengguna, semuanya baik-baik saja. Namun, saya juga perlu membuat variabel sistem di mana saya harus menambahkan direktori bin ke variabel yang saya buat di variabel pengguna untuk menjadi "path".

Sekarang, setiap kali saya melakukan ini saya mendapatkan erron yang mengatakan "Variabel Lingkungan ini terlalu besar. Sebagai akibatnya, saya tidak dapat membuat jalan.

Saya telah melampirkan gambar kesalahan ini.

Saya akan menghargai ini jika ada yang bisa membantu saya untuk menyelesaikan masalah ini.

Terima kasih sebelumnya atas bantuan Anda.masukkan deskripsi gambar di sini

olammy
sumber
14
Saya harap mereka memperbaikinya suatu hari nanti. Ini seharusnya tidak pernah terjadi. ^^
itmuckel
1
Solusi yang benar adalah untuk aplikasi untuk berhenti menyalahgunakan PATHvariabel lingkungan. Solusi yang tepat telah ada selama hampir 2 dekade sekarang . Tetapi mendorong pengembang untuk menggunakannya seperti mencabut gigi.
Ian Boyd

Jawaban:

148

Ketika variabel PATH kelebihan beban dengan terlalu banyak nilai, ini mencapai titik di mana Anda tidak dapat menambahkan nilai lagi. Mencoba yang berikut ini akan menyelesaikan masalah Anda.

Solusi 1:

  1. Buat variabel sistem baru katakan 'NEWPATH'
  2. Tetapkan lokasi direktori bin ke 'NEWPATH'
  3. Sekarang tambahkan ' ; % NEWPATH% 'ke variabel PATH

Jika ini masih tidak berhasil maka cobalah untuk menyalin beberapa bagian dari variabel PATH nilai yang sudah ada ke 'NEWPATH' dan kemudian menambahkan 'NEWPATH'

Solusi 2:

Periksa nilai variabel PATH jika Anda bisa mengelompokkan dan memperpendek jalur. Sebagai contoh,

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

dapat digabungkan menjadi

C: \ Program Files \ Microsoft SQL Server;

Dengan cara ini Anda dapat membangun lebih banyak ruang ke dalam variabel PATH panjang tetap Anda dan akhirnya menyesuaikan lokasi direktori bin Anda menjadi PATH.

Semoga ini bisa membantu Anda!

Swapnil Kamat
sumber
Ya, Anda benar sekali. Begitu banyak penelitian telah menunjukkan kepada saya bahwa variabel path hanya dapat mengambil 2048 karakter dan ketika karakter mencapai tahap ini, variabel path tidak akan dapat mengambil banyak karakter lagi. Jadi saya mencoba apa yang Anda sarankan dan sekarang saya baik-baik saja. Terima kasih
Olammy
Terima kasih! Itu ide bagus @ solusi 1! Seharusnya memikirkan itu sendiri ... :)
Dev-iL
2
Ini berfungsi seperti pesona, terima kasih! Namun, kita harus berhati-hati ketika menggunakan setx PATHkarena ini akan langsung menyelesaikan %NEWPATH%dan string yang dihasilkan akan sekali lagi terlalu lama ... Jadi, menggunakan pendekatan ini, hanya dialog dan bukan baris perintah yang harus digunakan
IceFire
1
@SwapnilKamat Ini tidak sepenuhnya berfungsi: Saya menggunakan miktex, pdflatexharus ada di PATH, jika saya meletakkan lokasi pdflatexdi NEWPATH, pdflatexitu tidak ditemukan lagi ("perintah pdflatextidak dikenali" ...)
Olorin
7
Ironisnya, Microsoft SQL Server menetapkan begitu banyak variabel jalur sehingga itu saja hampir memenuhi ruang. Saya membuat variabel PATHS_MSSQL dan kemudian menambahkan% PATHS_MSSQL% ke variabel PATH untuk menggantikannya. Membebaskan banyak ruang dalam variabel PATH.
Steve Lloyd
49

Ada beberapa cara untuk membersihkan variabel jalur Anda. Cara termudah adalah menggunakan Rapid Environment Editor . Utilitas gratis ini akan,

  1. Hapus jalur duplikat (klik kanan> Jalur Bersihkan)
  2. Hapus folder yang tidak ada (ditunjukkan dengan warna merah yang perlu Anda hapus secara manual)
  3. Ganti jalur panjang dengan jalur pendek (klik kanan> jalur panjang ke pendek).

Saya melakukan langkah-langkah di atas secara berurutan dan menggunakan langkah ke-3 hanya untuk jalur terpanjang sampai ukuran variabel Path di kontrol lagi.

Jika Anda ingin lebih maju, inilah sedikit alat C # yang dapat Anda modifikasi ke logika apa pun yang ingin Anda terapkan.

Shital Shah
sumber
Sebelum membaca posting ini, saya belum pernah mendengar alat yang mana pun tetapi senang saya memilikinya! Terima kasih telah berbagi!
James Shaw
2
Alat ini luar biasa! MS harus menjadikannya editor resmi yang dilengkapi dengan windows!
burzum
35

Solusi lain atau lebih penyelesaian untuk melewati batas panjang variabel PATH Lingkungan adalah mengelola jalur Anda (tambahkan, hapus atau perbarui) menggunakan PowerShellskrip;

  1. Abadikan variabel PATH saat ini dengan mengklik "Edit Teks" (lihat screenshot di atas) dan salin ke clipboard Anda dan simpan dalam file teks sebagai cadangan juga untuk menghindari kejutan buruk. Ini tidak wajib tetapi akan memungkinkan Anda untuk memulihkan jika terjadi kesalahan.

  2. Sekarang setelah dicadangkan, tambahkan berikut ini ke file PowerShell (.ps1) baru (ubah baris pertama di bawah ini dengan jalur folder yang ingin Anda tambahkan (bagian setelah tanda +):

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

    [Lingkungan] :: SetEnvironmentVariable ("Path", $ newPath, "Machine")

    $ env: Path = $ newPath

Ini adalah bagaimana saya berhasil mendapatkan variabel PATH (lama) saya kembali setelah bermain dengan Windows 10 UI, terjebak oleh batasan panjang dan kehilangan sebagian besar jalur saya. Saya harap ini membantu.

Sifou13
sumber
Terima kasih .. Ini mudah. Ingin tahu apa perbedaan antara menetapkan nilai di baris 2 dan 3
Nayak
Baris 3 mengaturnya di sesi saat ini, baris 2 menetapkannya sebagai default mesin.
Tetsujin no Oni
2
PS bekerja untuk path yang lebih panjang tetapi setx /mtruncates tradisional ke 1048 karakter :(. Anda juga dapat mengedit path dalam editor teks dan cukup lakukan [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine"). Anda akan memerlukan admin shell.
Shital Shah
Mungkin menggunakan PS tetapi tidak menggunakan GUI. Hm, bagaimana itu masuk akal? Terpilih, terima kasih!
Legenda
11

Selain jawaban Swapnil, perhatikan bahwa Anda dapat memodifikasi panjang maksimum variabel Path - yang jika tidak dibatasi hingga 2048 karakter (sementara satu jalur memiliki batas historis 206 karakter). Di Windows 10, Anda mencapai ini dengan menetapkan LongPathsEnabledkunci registri ke 1, yang dapat ditemukan di sini:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Untuk mengakses editor registri:, Windows Key+Rketik Regedit.

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

Lihat juga jawaban SuperUser ini: https://superuser.com/a/1119980/327009

Mengatasi komentar di bawah ini: kesalahan "Variabel lingkungan terlalu besar" terkait dengan seluruh variabel, bukan jalur tunggal yang sedang ditambahkan.

alexlomba87
sumber
19
Apakah saran ini akurat? Panjang maksimum variabel PATH (yaitu gabungan beberapa jalur ) adalah 2048 karakter. 260 karakter yang Anda sebutkan adalah panjang maksimum satu jalur . Mereka terkait tetapi tidak sama.
Hendy Irawan
7

Terlambat tetapi saya mencari sesuatu yang serupa dan berakhir di sini. Saya mengubah semua jalur ke variabel untuk file program dan data program (yang ini menyimpan seperti 1 karakter meskipun tidak penting).

Untuk sesuatu seperti nodejs, saya mengubah jalur normal

C: \ Program Files \ nodejs \

untuk

% ProgramFiles% \ nodejs \

Ini dapat dilakukan dengan "C: \ Program Files (x86) \" juga menggunakan "% ProgramFiles (x86)% \"

Itu menyelamatkan saya beberapa karakter tetapi cukup sehingga berhenti mengeluh saya merasa.

Bryan
sumber
7
Mengapa tidak menggunakan% x86% untuk mengganti "C: \ Program Files (x86)" dan% x64% untuk mengganti "C: \ Program Files", sepertinya itu cara yang jauh lebih baik untuk mengurangi overhead karakter.
Xorcist
1
@Xorcist - bagus! Tidak tahu tentang itu
mark1234
Saya tidak berpikir mereka ada secara default tetapi Anda dapat membuatnya sendiri.
Gabriel Fair
saya juga tidak seperti itu, saya membuat% PF% untuk "c: \ Program FIles" dan menggunakannya sekitar 20 kali memungkinkan saya untuk mempersingkat jalur.
LaBracca
@Xorcist bagaimana itu dilakukan dengan membuat variabel lain?
Demodave
5

Saya menemukan Anda dapat melakukannya melalui PowerShell.

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

Jadi saya mengambil PATH sistem yang sudah ada, disisipkan ke notepad, menambahkan hal baru saya, lalu menempel ke bit "C: \ Program Files" di atas. Jalur diperbarui. Selesai

MENJADI
sumber
4

Coba modifikasi oleh regedit, dalam kasus saya ini berfungsi ketika panjangnya lebih dari 3000.

Tekan Win + Rdan masuk regedituntuk membuka regedit. Pergi ke Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, dan ubah nilai Pathke jalur Anda. Dan nyalakan kembali komputer, itu seharusnya bekerja.

yu yang Jian
sumber
1
Ini bekerja dengan baik untuk saya. Saya pikir itu mudah daripada metode lain.
shalitha senanayaka
1

Penanganan masalah:

Silakan restart sistem. Setelah memulai ulang sistem, PATH tidak lagi kosong, tetapi dapat terpotong hingga 2047 (4095) karakter Jika sistem restart tidak membantu, tolong:

Luncurkan c: \ windows \ system32 \ regedit.exe Buka kumpulan registri "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" Bersihkan direktori yang tidak perlu dari tombol "Path" Restart sistem

Catatan: Dalam beberapa kasus luar biasa jika sistem tidak dapat memulai, silakan:

Masuk dalam mode aman Buka shell prompt perintah dan ketik: reg tambahkan "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Path / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / f

Untuk lebih jelasnya: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

LeoZ
sumber
Bagaimana cara meningkatkan batas setidaknya 4095?
Dan M.
0

Rupanya Rapid Environment Editor akan melakukan ini untuk Anda (dari @shatil_shah jawab), tetapi Anda juga dapat mempersingkat jalur ke versi "8dot3" mereka. Anda akan mendapatkan banyak jarak tempuh hanya dengan dua penggantian ini:

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

Jika Anda menyalin jalur Anda saat ini ke Notepad pertama-tama cari dan ganti C:\Program Files (x86)kemudian C:\Progam Files.

bfris
sumber
-3

Workarround. Gunakan Edit Teks dan edit PATH Anda dalam Editor teks

Christoph Adamakis
sumber
2
Saya mencoba mengikuti saran Anda. File apa variabel lingkungan yang disimpan di komputer saya?
Gabriel Fair
itu hanya teks. Buka menggunakan notepad
Christoph Adamakis
@GabrielFair Anda harus mengklik tombol yang dipanggil Edit Text, alih-alih membuka beberapa file.
AlexMelw