Quá nhiều thư mục trong biến đường dẫn


15

Tôi đã gặp phải một vấn đề lạ - Tôi không thể khởi chạy Visual Studio, cũng không chạy các lệnh đơn giản từ dấu nhắc lệnh, dường như do biến PATH của tôi quá dài. Bây giờ tôi nhìn vào nó, tôi thấy rằng nhiều công ty đã thêm các thư mục cài đặt của họ vào biến PATH.

Tôi đã tự hỏi tại sao các công ty này đã thêm các thư mục của họ vào đường dẫn (có lẽ để đơn giản hơn để thực hiện các chương trình của họ?), Và đó là điều cần thiết và tôi có thể xóa. Nếu tôi xóa một số trong số họ, tôi sẽ không thể khởi chạy các chương trình? ( Đây là những gì hiện đang tồn tại trong đường dẫn)


1
Tôi thực sự không cảm thấy như thế là đặc biệt dài PATH... Điều gì khiến bạn nghi ngờ rằng nó quá dài? Là VS ném xuống một số loại lỗi? Ngoài ra, phiên bản Windows nào bạn đang chạy?
bosco

@bosco Tôi nghi ngờ nó quá dài vì dấu nhắc lệnh không thể tìm thấy các lệnh đơn giản như ping. Ngoài ra, có vẻ như điều này không phổ biến với studio hình ảnh . Nó cũng đã được đề cập ở đây là giới hạn cho PATH sử dụng dòng lệnh là khoảng năm 2000.
CC Inc

Visual studio 2012 đưa ra lỗi "Ngoại lệ đã bị ném bởi mục tiêu của một lời mời" khi khởi động. Và khi tôi tìm trong ActivityLog.xml, nó nói với tôiThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

2
Tất cả các loại hack và giải pháp trong câu trả lời được chấp nhận của câu hỏi Stack Overflow # 4405091 :)
bosco

Câu trả lời:


13

có thể giảm số lượng đường dẫn quá mức trong các biến môi trường PATH, chỉ cần lưu toàn bộ dòng ra một notepad, như một bản sao lưu và loại bỏ một số và kiểm tra.

Hầu hết trong số họ đều ở đó vì vậy nếu một phím tắt không có đường dẫn đầy đủ được đặt cho "Target", nếu "Start In" không được đặt chính xác trong phím tắt hoặc việc khởi chạy được thực hiện một cách kỳ lạ thì chương trình của họ và các phần và phần của nó luôn luôn tìm. Đó là một Failsafe trong hầu hết các tình huống. Bạn vẫn muốn kiểm tra đầy đủ mọi hoạt động sử dụng của bất kỳ chương trình nào mà bạn đã xóa các đường dẫn của nó.
Nó cũng rất hữu ích với những người gõ lệnh vào CMDprompt, ngay cả khi không có đĩa CD, máy tính sẽ quét từng vị trí, cho đến khi một chương trình có tên đó được tìm thấy và chạy. Hoặc bất kỳ lệnh nào khác có cùng tên :-)

Tập hợp các đường dẫn WAS (neo) được giới hạn ở dưới 255 (hoặc260) charachters, đã thay đổi thành 1024 cách đây một thời gian, sau đó được vá lại trong thời đại máy chủ 03 để xử lý 2048 và được cho là có thể xử lý 8096 trên một số hệ thống, thậm chí từ lâu.

Những hạn chế thực sự được phát hiện ngày nay mà mọi người gặp phải, là trong CMDprompt có giới hạn về độ dài của chuỗi lệnh, bao gồm việc mở rộng các biến và đường dẫn.

http://msdn.microsoft.com/en-us/l Library / windows / desktop / ms682653 (v = vs85) .aspx tại đây Microsoft nói:

"Kích thước tối đa của biến môi trường do người dùng xác định là 32.767 ký tự. Không có giới hạn kỹ thuật về kích thước của khối môi trường. Tuy nhiên, có các giới hạn thực tế tùy thuộc vào cơ chế được sử dụng để truy cập vào khối. Ví dụ: tệp bó không thể đặt biến dài hơn độ dài dòng lệnh tối đa. "

Tại vị trí đó ^ họ chỉ đến vị trí đăng ký có chứa các đường dẫn hệ thống HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment Phải đọc phần còn lại của nó ở đó.

Giới hạn lô và giới hạn của CMDprompt là 2048 charachters sau khi được mở rộng và được gọi là gấp 4 lần đối với các hệ thống mới hơn (cần trích dẫn vì mọi người không thấy điều đó)

Đồng thời xem http://support.microsoft.com/kb/830473 , thảo luận về dấu nhắc lệnh và độ dài lô cho các hệ thống cũ.

Để đảm bảo rằng các mục nhập chính xác trong đó, wiki có nội dung này để nói:
http://en.wikipedia.org/wiki/En Môi_variable

% PATH% Biến này chứa danh sách các thư mục được phân cách bằng dấu chấm phẩy ( không đặt khoảng trắng ở giữa ) các thư mục trong đó trình thông dịch lệnh sẽ tìm kiếm tệp thực thi khớp với lệnh đã cho. Các biến môi trường đại diện cho các đường dẫn có thể được lồng trong biến PATH nhưng chỉ ở một mức độ không xác định. Nếu chính biến môi trường đường dẫn phụ này chứa biến môi trường đại diện cho một đường dẫn, PATH sẽ không mở rộng đúng cách trong thay thế biến.

Có tất cả các con đường bổ sung trong đó làm chậm một số thứ nhất định xuống một chút, bởi vì sau đó nó buộc phải tìm kiếm ở tất cả những nơi đó, trước khi nó từ bỏ. Sử dụng đường dẫn đầy đủ bất cứ khi nào gọi các mục tệp sẽ luôn nhanh hơn, ngay cả khi tạo khối hoặc sử dụng CMDprompt.

Sử dụng các quy ước cũ của DOSlike 8.3 là một cách để thu nhỏ kích thước, Batch /programming//a/20362922 này hoạt động tốt. hãy chắc chắn (một lần nữa) để sao lưu chuỗi gốc. Xem thêm các giải pháp có thể khác tại câu hỏi đó.

Đây là vẻ ngoài của tôi, nó đã tệ hơn.
% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% HỆ THỐNG %%

Tôi sẽ nhanh chóng thực hiện nhanh chóng và các chương trình AMD đã đặt một con đường mở rộng vào đó trước đó, ném nó, Adobee có một, không ai trong số này quan trọng đối với các phương pháp biểu tượng / phím tắt GUI tiêu chuẩn. Nhiều thứ có thể được gỡ bỏ, sau đó kiểm tra tất cả các chức năng. Nếu bạn gọi mọi thứ bằng cách gõ vào dấu nhắc CMD, thì việc xóa các đường dẫn đó sẽ không hoạt động.


Vì vậy, bạn đang nói rằng các ứng dụng sẽ không thất bại nếu tôi loại bỏ các đường dẫn?
CC Inc

Windows 7 64-bit
CC Inc

Có bất cứ điều gì trong đó bạn biết đã được gỡ cài đặt? Lấy ra Qt, AMd và Nividia, (sau khi bạn sao lưu nó) mabey và xem nó có đủ ngắn không? Tôi đã đăng của tôi, nó có khoảng 140 ký tự.
Psycogeek

Được rồi, tôi sẽ thấy ..
CC Inc

3
Giới hạn xuất hiện là 2048 ký tự . Sau thời điểm đó, tôi không thể nhập thêm bất kỳ ký tự nào vào GUI Biến môi trường.
Mateen Ulhaq

9

Tôi có một số biến môi trường liên quan đến phát triển phần mềm trên đường dẫn của mình, tất cả đều quan trọng.

Giải pháp trên sẽ không hiệu quả với tôi, vì vậy tôi đã đi đến các mối nối thư mục :

  • Chọn một số đường dẫn dài nhất trong PATH của tôi (Thích C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Tạo một thư mục nhỏ để lưu trữ các mối nối của tôi: c: \ d \
  • Tạo các mối nối ngắn cho các đường dẫn dài:

mklink / jc: \ d \ sql "C: \ Tệp chương trình (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \"

Làm điều đó trên 15 đường dẫn đã giảm PATH của tôi từ 2045 xuống còn 1285 ký tự.

Nó có thể là một vấn đề khi cuối cùng bạn gỡ cài đặt các thứ khỏi máy của bạn vì các mối nối sẽ vẫn ở đó trong đường dẫn và bạn sẽ phải dọn dẹp chúng theo cách thủ công.


1
Tôi có một môi trường dev khá điển hình, VS + mới nhất được cài đặt một số phiên bản cũ hơn và máy chủ SQL. Điều này, cho đến nay đã là giải pháp tốt nhất. Câu trả lời được chấp nhận để ném các đường dẫn ra là vô lý.
Lưới

Bạn đã thay đổi mục nhập đường dẫn đăng ký cho C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ thành? c: \ d \ sql?
OutOFTouch

Nếu bạn có nghĩa là biến môi trường PATH thì có. Tôi không gây rối với bất kỳ tài liệu tham khảo nào khác đến các thư mục của SQL Server.
Juliano

Dưới đây là một tốt đẹp chút hướng dẫn về liên kết cứng: howtogeek.com/howto/16226/...
ofer.sheffer

1

Mặc dù mức tối đa cho phép trong đường dẫn dài hơn nhiều, tôi đã tìm thấy trên các câu trả lời có thẩm quyền của Stack Overflow về chủ đề này (và các tài liệu tham khảo của Microsoft) nói rằng giá trị đường dẫn mở rộng tối đa 2048 byte sẽ hoạt động và bất cứ điều gì lâu hơn sẽ gây ra vấn đề. Bằng cách "mở rộng" Tôi có nghĩa là bất kỳ biến nào được biểu thị bằng% dấu phân cách sẽ được chèn các giá trị của chúng để trở thành giá trị mở rộng và tổng chiều dài được mở rộng không được vượt quá 2048 byte. Tôi đã nhận thấy rằng các loại sự cố mà nó gây ra (kể từ Windows 7) là:

  • Không nhận ra đường dẫn ở cuối giá trị
  • Việc cài đặt phần mềm hoặc các bản vá sửa đổi giá trị PATH khiến giá trị thời gian chạy trở thành NULL, do đó gây ra tất cả các loại sự cố khi chạy Windows, như tất cả các biểu tượng Start Menu, Desktop và Thanh tác vụ của bạn bị mất hình ảnh và các lệnh nhắc lệnh đơn giản như " ping "hoặc" ipconfig "hiển thị lệnh không nhận ra lỗi
  • Các chương trình ứng dụng dựa trên các giá trị PATH không thành công

Cá nhân, tôi khuyên bạn nên sử dụng các hệ điều hành khác ngoài Windows, nhưng nếu bạn bị kẹt trên nó, thì bạn phải dành hàng giờ để xóa các mục nhập đường dẫn, kiểm tra để đảm bảo nó không phá vỡ bất cứ thứ gì và nhận giá trị đường dẫn xuống tới 2048 byte.


Không rõ câu trả lời của tác giả, ít nhất là nhiều hơn, sau đó các câu trả lời hiện có, cung cấp bằng chứng thực tế để sao lưu các tuyên bố của họ.
Ramhound
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.