Tài liệu của Microsoft nói rằng một biến môi trường trên Windows chỉ giới hạn ở 32.767 ký tự ( liên kết ), nhưng không cho biết cách tạo biến dài như vậy.
Vấn đề ở đây là các công cụ mà Windows cung cấp đều có giới hạn của chúng:
Các lệnh set và setx cắt ngắn các giá trị thành 1023 ký tự.
Thiết lập trực tiếp trong sổ đăng ký
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
không thành công do regedit cắt ngắn chuỗi nhập sau 2047 ký tự.
Vì vậy, bạn phải sử dụng cách giải quyết.
Sử dụng tên thư mục ngắn
Bạn có thể thấy tên như vậy bằng cách sử dụng dir /x /ad
. Ví dụ sau đây cho thấy rằng trên máy tính của tôi, thư mục Program Files (x86)
có thể được thay thế bằng PROGRA~2
:
Sử dụng các biến môi trường nhúng
Nếu bạn có:
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2
sau đó bạn có thể tạo một biến môi trường mới, chẳng hạn như:
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
sau đó đường dẫn ban đầu của bạn trở thành
%P1%\subdir1
%P1%\subdir2
Bạn cũng có thể chia PATH thành hai bằng cách tạo một biến mới, giả sử NEWPATH
, chứa các đường dẫn thừa và nối ;%NEWPATH%
vào biến PATH.
Tránh sử dụng
lệnh setx
vì nó sẽ trực tiếp giải quyết các biến môi trường được nhúng và chuỗi kết quả sẽ một lần nữa quá dài.
Sử dụng tập lệnh PowerShell để đặt PATH
PowerShell gọi API Windows trực tiếp và do đó có thể đạt đến giới hạn lý thuyết là 32.767 ký tự cho một biến môi trường.
Kịch bản có thể chứa các lệnh như:
[Environment]::SetEnvironmentVariable("Path", $longpath, "Machine")