Biến môi trường quá lớn trên Windows 10


147

Tôi biết điều này là lạ và tôi đã dành gần 3 ngày để tìm kiếm giải pháp trực tuyến mà không nhận được một giải pháp hữu ích. Vì vậy, tôi đã quyết định đến đây.

Gần đây tôi đã nâng cấp lên Windows 10 từ Windows 8.1.

Bây giờ tôi muốn đặt biến Môi trường cho bản cài đặt Apache Maven mới của mình.

Mỗi lần tôi tạo biến người dùng, mọi thứ đều ổn. Tuy nhiên, tôi cũng cần tạo biến hệ thống trong đó tôi sẽ cần nối thêm thư mục bin vào biến mà tôi tự tạo trong biến người dùng thành "đường dẫn".

Bây giờ, mỗi lần tôi làm điều này, tôi nhận được một erron có nội dung "Biến môi trường này quá lớn. Do đó, tôi không thể tạo đường dẫn.

Tôi đã đính kèm hình ảnh của lỗi này.

Tôi sẽ đánh giá cao điều này nếu bất cứ ai có thể giúp tôi giải quyết vấn đề này.

Cảm ơn bạn trước sự giúp đỡ của bạn.nhập mô tả hình ảnh ở đây


14
Tôi hy vọng họ sửa lỗi này một ngày nào đó. Điều này sẽ không bao giờ xảy ra. ^^
itmuckel

1
Giải pháp chính xác là cho các ứng dụng dừng việc lạm dụng PATHbiến môi trường. Các giải pháp thích hợp đã tồn tại gần 2 thập kỷ nay . Nhưng để các nhà phát triển sử dụng nó cũng giống như nhổ răng.
Ian Boyd

Câu trả lời:


147

Khi biến PATH bị quá tải với quá nhiều giá trị, nó đạt đến điểm mà bạn không thể thêm giá trị nữa. Cố gắng sau đây sẽ giải quyết vấn đề của bạn.

Giải pháp 1:

  1. Tạo một biến hệ thống mới, nói 'NEWPATH'
  2. Chỉ định vị trí thư mục bin cho 'NEWPATH'
  3. Bây giờ nối thêm ' ; % NEWPATH% 'cho biến PATH

Nếu điều này vẫn không hoạt động thì hãy thử sao chép một số phần của biến PATH đã có sẵn vào 'NEWPATH' và sau đó nối thêm 'NEWPATH'

Giải pháp 2:

Kiểm tra giá trị của biến PATH nếu bạn có thể nhóm và rút ngắn các đường dẫn. Ví dụ,

C: \ Tệp chương trình \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C: \ Chương trình tệp \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

có thể được kết hợp để

C: \ Tệp chương trình \ Microsoft SQL Server;

Bằng cách này, bạn có thể tạo thêm không gian vào biến PATH có độ dài cố định và cuối cùng điều chỉnh vị trí thư mục bin của bạn thành PATH.

Hy vọng điều này sẽ giúp bạn!


Có bạn rất đúng. Rất nhiều nghiên cứu đã cho tôi thấy rằng biến đường dẫn chỉ có thể mất 2048 ký tự và khi các ký tự đến giai đoạn này, biến đường dẫn sẽ không thể lấy nhiều ký tự nữa. Vì vậy, tôi đã thử những gì bạn đề nghị và bây giờ tôi ổn. Cảm ơn bạn
olammy

Cảm ơn bạn! Đó là một ý tưởng tuyệt vời @ giải pháp 1! Tôi nên tự nghĩ về điều đó ... :)
Dev-iL

2
Điều này hoạt động như một nét duyên dáng, cảm ơn bạn! Tuy nhiên, người ta phải thận trọng khi sử dụng setx PATHvì điều này sẽ trực tiếp giải quyết %NEWPATH%và chuỗi kết quả sẽ lại kéo dài quá lâu ... Vì vậy, sử dụng phương pháp này, chỉ nên sử dụng hộp thoại và không phải dòng lệnh
IceFire

1
@SwapnilKamat Điều này không hoàn toàn công việc: Tôi đang sử dụng MiKTeX, nó pdflatexphải được PATH, nếu tôi đặt vị trí của pdflatextrong NEWPATH, pdflatexnó không tìm thấy nữa ( "lệnh pdflatexkhông được công nhận" ...)
Olorin

7
Trớ trêu thay, Microsoft SQL Server đã thiết lập rất nhiều biến đường dẫn đến mức nó gần như lấp đầy không gian. Tôi đã tạo một biến PATHS_MSSQL và sau đó thêm% PATHS_MSSQL% vào biến PATH để thay thế chúng. Giải phóng rất nhiều không gian trong biến PATH.
Steve Lloyd

49

Có một số cách để làm sạch biến đường dẫn của bạn. Đơn giản nhất là sử dụng Trình soạn thảo môi trường nhanh . Tiện ích miễn phí này sẽ,

  1. Xóa các đường dẫn trùng lặp (nhấp chuột phải> Đường dẫn dọn dẹp)
  2. Xóa các thư mục không tồn tại (hiển thị màu đỏ mà bạn cần xóa thủ công)
  3. Thay thế các đường dẫn dài bằng các đường dẫn ngắn (nhấp chuột phải> đường dẫn dài đến ngắn).

Tôi thực hiện các bước trên theo thứ tự và chỉ sử dụng bước thứ 3 cho các đường dẫn dài nhất cho đến khi kích thước biến Đường dẫn được kiểm soát lại.

Nếu bạn muốn nâng cao hơn, đây là công cụ C # nhỏ mà bạn có thể sửa đổi thành bất kỳ logic nào khác mà bạn muốn thực hiện.


Trước khi đọc bài đăng này, tôi chưa bao giờ nghe nói về một trong hai công cụ nhưng rất vui vì tôi có! Cám ơn vì đã chia sẻ!
James Shaw

2
Công cụ này là tuyệt vời! MS nên làm cho nó trở thành trình soạn thảo chính thức đi kèm với windows!
burzum

35

Một giải pháp khác hoặc nhiều cách giải quyết khác để vượt qua giới hạn độ dài biến môi trường PATH là quản lý đường dẫn của bạn (thêm, xóa hoặc cập nhật) bằng cách sử dụng PowerShelltập lệnh;

  1. Nắm bắt biến PATH hiện tại bằng cách nhấp vào "Chỉnh sửa văn bản" (xem ảnh chụp màn hình ở trên) và sao chép nó vào khay nhớ tạm của bạn và lưu nó trong tệp văn bản dưới dạng bản sao lưu để tránh những bất ngờ xấu. Điều này không bắt buộc nhưng sẽ cho phép bạn phục hồi nếu có sự cố xảy ra.

  2. Bây giờ, nó đã được sao lưu, thêm phần sau vào tệp PowerShell (.ps1) mới (sửa đổi dòng đầu tiên bên dưới với (các) đường dẫn thư mục bạn muốn thêm (phần sau dấu +):

    $ newPath = $ env: Đường dẫn + '; C: \ Người dùng .... \ FirstFolderToAddToPath; C: \ Người dùng .... \ Thứ haiFolderToAddToPath; '

    [Môi trường] :: SetEn Môi trường Biến đổi ("Đường dẫn", $ newPath, "Máy")

    $ env: Đường dẫn = $ newPath

Đây là cách tôi quản lý để lấy lại biến PATH (dài) của mình sau khi chơi với Giao diện người dùng Windows 10, bị giới hạn độ dài và mất hầu hết đường dẫn. Tôi hy vọng nó sẽ giúp.


Cảm ơn .. Điều này thật dễ dàng. Tò mò có gì khác biệt giữa việc gán giá trị trong dòng 2 và 3
Nayak

Dòng 3 đặt nó trong phiên hiện tại, dòng 2 đặt nó làm mặc định của máy.
Tetsujin no Oni

2
PS hoạt động cho đường dẫn dài hơn nhưng setx /mcắt ngắn truyền thống thành 1048 ký tự :(. Bạn cũng có thể chỉnh sửa đường dẫn trong trình soạn thảo văn bản và chỉ cần làm [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine"). Bạn sẽ cần trình quản trị viên.
Shital Shah

Có thể sử dụng PS nhưng không sử dụng GUI. Hừm, làm thế nào mà có ý nghĩa? Ủng hộ, cảm ơn!
Huyền thoại

9

Ngoài câu trả lời của Swapnil, lưu ý rằng bạn có thể sửa đổi độ dài tối đa của biến Đường dẫn - giới hạn ở 2048 ký tự (trong khi một đường dẫn có giới hạn lịch sử là 206 ký tự). Trong Windows 10, bạn đạt được điều này bằng cách đặt LongPathsEnabledkhóa đăng ký thành 1, có thể tìm thấy ở đây:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Để truy cập trình soạn thảo sổ đăng ký : Windows Key+R, gõ Regedit.

Nguồn: https://superuser.com/a/1119980

Ngoài ra hãy xem câu trả lời của SuperUser này: https://superuser.com/a/1119980/327009

Giải quyết bình luận bên dưới: lỗi "Biến môi trường quá lớn" có liên quan đến toàn bộ biến, không phải là đường dẫn duy nhất hiện đang được thêm vào.


19
Đây có phải là lời khuyên chính xác? Độ dài tối đa của biến PATH (nghĩa là nối nhiều đường dẫn ) là 2048 ký tự. 260 ký tự mà bạn đề cập là độ dài tối đa của một đường dẫn . Chúng có liên quan nhưng không giống nhau.
Hendy I Girls

7

Trả lời muộn nhưng tôi đang tìm kiếm một cái gì đó tương tự và kết thúc ở đây. Tôi đã thay đổi tất cả các đường dẫn thành các biến cho các tệp chương trình và chương trình (cái này lưu như 1 ký tự mặc dù không quan trọng lắm).

Đối với một cái gì đó như nodejs, tôi đã thay đổi đường dẫn bình thường của

C: \ Tệp chương trình \ nodejs \

đến

% Chương trình %% \ nodejs \

Điều này có thể được thực hiện với "C: \ Program Files (x86) \" bằng cách sử dụng "% ProgramFiles (x86)% \"

Nó đã cứu tôi một vài nhân vật nhưng đủ để tôi ngừng phàn nàn.


7
Tại sao không chỉ sử dụng% x86% để thay thế "C: \ Program Files (x86)" và% x64% để thay thế "C: \ Program Files", có vẻ như đó là cách tốt hơn để giảm chi phí nhân vật.
Xorcist

1
@Xorcist - một cái hay đấy! Không biết gì về những điều đó
mark1234

Tôi không nghĩ rằng chúng tồn tại theo mặc định nhưng bạn có thể tự tạo chúng.
Hội chợ Gabriel

tôi cũng đã làm như vậy, tôi đã tạo% PF% cho "c: \ Chương trình FIles" và sử dụng nó khoảng 20 lần cho phép tôi rút ngắn đường dẫn đủ.
LaBracca

@Xorcist làm thế nào được thực hiện bằng cách tạo một biến khác?
Demodave

5

Tôi thấy bạn có thể làm thông qua PowerShell.

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

Vì vậy, tôi đã chộp lấy hệ thống PATH hiện có, dán vào notepad, thêm điều mới của tôi, sau đó dán vào bit "C: \ Program Files" ở trên. Đường dẫn cập nhật. Làm xong.


4

Hãy thử sửa đổi regedit, trong trường hợp của tôi, nó hoạt động khi chiều dài hơn 3000.

Nhấn Win + Rvà nhập regeditđể mở regedit. Đi đến Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentvà sửa đổi giá trị của Pathđường dẫn của bạn. Và khởi động lại máy tính, nó sẽ hoạt động.


1
Điều này làm việc tốt cho tôi. Tôi nghĩ nó dễ hơn các phương pháp khác.
shalitha senanayaka

1

Cách giải quyết:

Vui lòng khởi động lại hệ thống. Sau khi khởi động lại hệ thống, PATH không còn trống, nhưng có thể bị cắt ngắn thành 2047 (4095) ký tự Nếu hệ thống khởi động lại không giúp ích gì:

Khởi chạy c: \ windows \ system32 \ regedit.exe Chuyển đến trung tâm đăng ký "HKLM \ HỆ THỐNG \ CurrentControlSet \ Control \ Trình quản lý phiên \ Môi trường" Dọn dẹp các thư mục không cần thiết từ khóa Path Path Khởi động lại hệ thống

Lưu ý: Trong một số trường hợp đặc biệt nếu hệ thống không thể khởi động, vui lòng:

Đăng nhập trong chế độ an toàn Mở shell nhắc lệnh và gõ: reg thêm "HKLM \ HỆ THỐNG \ CurrentControlset \ Control \ Session Manager \ Môi trường" / v Đường dẫn / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / f

Để biết thêm chi tiết: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable


Làm thế nào để tăng giới hạn đến ít nhất 4095?
Dan M.


0

Rõ ràng Trình soạn thảo môi trường nhanh sẽ làm điều này cho bạn (từ câu trả lời @shatil_shah), nhưng bạn cũng có thể rút ngắn các đường dẫn đến phiên bản "8dot3" của họ. Bạn sẽ nhận được rất nhiều số dặm chỉ với hai lần thay thế sau:

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

Nếu bạn sao chép đường dẫn hiện tại của bạn vào Notepad đầu tiên tìm kiếm và thay thế C:\Program Files (x86)và sau đó C:\Progam Files.


-3

Cách giải quyết. Sử dụng Chỉnh sửa văn bản và chỉnh sửa ĐƯỜNG của bạn trong Trình chỉnh sửa văn bản


2
Tôi đang cố gắng làm theo lời khuyên của bạn. Tập tin nào là các biến môi trường được lưu trữ trên máy tính của tôi?
Hội chợ Gabriel

nó chỉ là văn bản. Mở nó bằng notepad
Christoph Adamakis

@GabrielFair Bạn phải bấm vào nút được gọi Edit Text, thay vì mở một số tệp.
AlexMelw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.