2015-12-28 26 views
44

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 giải pháp hữu ích. Vì vậy, tôi đã quyết định đến đây.Biến môi trường quá lớn trên Windows 10

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 tôi.

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 phải tạo biến hệ thống, nơi tôi sẽ cần phải nối thêm thư mục bin vào biến mà tôi tạo vùng trong biến người dùng là "đường dẫn".

Bây giờ, mỗi khi tôi làm điều này tôi nhận được một erron nói rằng "Biến môi trường này quá lớn. Như một kết quả của việc này, tôi không thể để tạo ra con đường.

Tôi có kèm theo hình ảnh của lỗi này .

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

Cảm ơn bạn trước để được giúp đỡ của bạn. enter image description here

+6

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

Trả lời

53

Khi biến PATH bị quá tải với quá nhiều giá trị nó đạt đến một wh điểm bạn không thể thêm giá trị nữa. Việc thử những điều 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. Gán vị trí thư mục bin để 'NEWPATH'
  3. Bây giờ thêm '; % NEWPATH% 'vào biến PATH

Nếu điều này vẫn không làm việc thì cố gắng sao chép một số phần của biến PATH đã tồn tại giá trị cho 'NEWPATH' và sau đó thêm các '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 đường dẫn. Ví dụ:

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

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

C: \ Program Files \ 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!

+0

Chào mừng đến với cộng đồng của chúng tôi Swapnil Kamat. – ehsan88

+0

Cảm ơn bạn Ehsan! –

+0

Có bạn rất đúng. Vì vậy, nhiều nghiên cứu đã chỉ cho tôi rằng biến đường dẫn chỉ có thể mất 2048 ký tự và khi các ký tự đạ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

3

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

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

C: \ Program Files \ nodejs \

để

% ProgramFiles% \ nodejs \

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

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

+1

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

+0

@Xorcist - đẹp nhất! Không có ý tưởng về những – mark1234

+0

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. –

5

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 Path, vốn đã được giới hạn trong lịch sử là 260 ký tự. Trong Windows 10, bạn đạt được điều này bằng cách thiết lập phím LongPathsEnabled registry tới 1, có thể được tìm thấy ở đây:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 

Để truy cập vào registry editor: Ctrl+R, gõ Regedit.

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

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

+3

Đây có phải là lời khuyên chính xác không? Độ dài tối đa của biến PATH (tức 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. –

9

Một giải pháp hay hơn một workaround để vượt qua giới hạn độ dài biến PATH Môi trường là để quản lý con đường của bạn (thêm, xóa hoặc cập nhật) bằng tập lệnh PowerShell;

1) Chụp 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 vào khay nhớ tạm và lưu trong tệp văn bản làm bản sao lưu để tránh những điều bất ngờ. Đây không phải là bắt buộc nhưng sẽ cho phép bạn phục hồi nếu có sự cố.

2) Bây giờ nó đã được sao lưu, thêm phần sau vào tệp PowerShell (.ps1) mới (sửa 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:Path + '; C:\Users\....\FirstFolderToAddToPath; C:\Users\....\SecondFolderToAddToPath;' 

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

$env:Path = $newPath 

Đây là cách tôi quản lý để có được biến (dài) pATH của tôi trở lại sau khi chơi với Windows 10 UI, được đánh bắt bởi các giới hạn chiều dài và mất hầu hết con đường của tôi, tôi hy vọng nó sẽ giúp

..
+0

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

+0

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

+0

PS hoạt động cho đường dẫn dài hơn nhưng truyền thống 'setx/m' cắt ngắn 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 thực hiện' [Environment] :: SetEnvironmentVariable ("Path", '\ my \ new; path1 ',' Máy ') '. Bạn sẽ cần vỏ quản trị – ShitalShah

-1

Sử dụng Chỉnh sửa văn bản và chỉnh sửa PATH của bạn trong trình chỉnh sửa văn bản

+0

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ên máy tính của tôi? –

+0

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

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 khởi động lại hệ thống không giúp được:

Khởi chạy c: \ windows \ system32 \ regedit.exe Đi đến hive đăng ký "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Môi trường" Dọn dẹp các thư mục không cần thiết từ phím "Đường dẫn" 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ể để bắt đầu xin vui lòng:

Login trong chế độ an toàn Mở vỏ dấu nhắc lệnh và gõ: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment"/v Lối đi/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

1

Có một vài cách để làm sạch biến đường dẫn của bạn. Cách dễ nhất là sử dụng Rapid Environment Editor. tiện ích miễn phí này sẽ,

  1. Tháo đường trùng lặp (click chuột phải> Cleanup Paths)
  2. Hủy bỏ thư mục không tồn tại (thể hiện trong màu đỏ mà bạn cần phải tự xóa)
  3. Thay thế những con đường dài với con đường 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à sử dụng bước thứ 3 chỉ 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 một lần nữa.

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

0

Thêm vào câu trả lời khác, nếu bạn có Group Policy Editor trong cửa sổ của bạn, nhấn WinKey + R và viết gpedit.msc, trong cửa sổ bật lên ở phía bên trái cây, hãy vào:

Computer Cấu hình -> Mẫu quản trị -> Hệ thống -> Hệ thống tập tin và nhấp đúp vào "Bật đường dẫn dài Win32" và đặt thành Bật. Bạn có thể cần khởi động lại để các thay đổi có hiệu lực. Lưu ý rằng với tư cách là người xây dựng công cụ quản lý biến môi trường cho dự án cụ thể mà tôi làm việc, tôi có thể nói rằng Biến môi trường Windows khá lỗi khi nói đến biến tham chiếu đến biến đã tham chiếu biến khác, im lặng hút và để đọc các loại biến đúng cách, bạn cần phải bắt đầu ứng dụng đọc các biến này với sự cho phép evault (như admin), nếu không nó sẽ đọc các biến như% SOME_VARIABLE%/Folder1/Folder2. Đó là lý do tại sao tôi ngừng sử dụng tính năng đó và sử dụng đường dẫn tuyệt đối vì tôi có nhiều biến được đặt trong biến môi trường người dùng và hệ thống cho môi trường phát triển của mình. Tôi khuyên bạn không nên tham chiếu biến đã có biến được tham chiếu từ trải nghiệm của tôi để tránh các tình huống này.

Các vấn đề liên quan