Có một vấn đề nhất định với việc mở rộng các biến môi trường trong biến PATH khi biến mở rộng thành một đường dẫn chứa khoảng trắng.
Chúng tôi đã tạo các biến cấp độ hệ thống của riêng mình như "OUR_ROOT = c: \ MyRoot" và sau đó sử dụng nó trong hệ thống PATH như "PATH =;% OUR_ROOT% \ bin;" và được mở rộng chính xác thành "PATH =; c: \ MyRoot \ bin;". Cho đến nay không có vấn đề.
Nhưng, trên Windows 7 (32-bit), tôi đã có một sản phẩm tự cài đặt và tạo các biến môi trường hệ thống như thế này:
STUDIO_BIN=C:\program files\Company Name\Product Name 10.4\bin
và nó đã thêm nó vào biến PATH của hệ thống:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>
Nhưng các giá trị PATH được hiển thị trong CMD chứa "% STUDIO_BIN%;" và không phải là con đường mở rộng. Giá trị trong Máy tính của tôi> Thuộc tính> Nâng cao> Env.Vars vẫn chưa được mở rộng. Điều này có nghĩa là tôi không thể chạy các chương trình yêu cầu DLL trong thư mục đó.
Bằng cách chỉ thay đổi STUDIO_BIN (thông qua Máy tính của tôi> Thuộc tính> Nâng cao ...> Env Vars) thành tên không có khoảng trắng được nhúng:
STUDIO_BIN=C:\ProductName\bin
và sau đó khởi động lại cửa sổ CMD, PATH hiện tại:
PATH=<other path elements>;C:\ProductName\bin;<more path elements>
Một giải pháp khác là chỉnh sửa đầy đủ biến hệ thống bạn đang sử dụng trong PATH bằng hộp thoại Máy tính của tôi> Thuộc tính> Nâng cao ...> Biến môi trường. Tôi đã thử thêm một ký tự và xóa nó để thực hiện 'thay đổi' và sau đó OK, bắt đầu một dấu nhắc CMD mới và PATH KHÔNG được mở rộng chính xác. Sau đó tôi đã cố gắng xóa một phần của đường dẫn để nó được
STUDIO_BIN=C:\Program Files\Company Name
(bỏ qua "Tên sản phẩm 10,4") và lo, và nhắc nhở, dấu nhắc CMD tiếp theo hiển thị PATH với STUDIO_BIN được mở rộng đúng cách!
Thật kỳ lạ, nếu tôi quay lại và thêm "Tên sản phẩm 10,4" vào STUDIO_BIN (bao gồm tất cả các khoảng trống ban đầu ở đó trước khi tôi bắt đầu mấp máy với nó) và PATH được mở rộng chính xác.
Rõ ràng với sự thay đổi đủ về nội dung của nó, biến PATH trải qua một số xử lý bổ sung trong hộp thoại Biến môi trường cho phép nó hoạt động. Việc xử lý không được thực hiện khi biến được thêm bởi trình cài đặt của sản phẩm (có thể chỉ sửa đổi PATH trong sổ đăng ký).
Tôi gần như tích cực đây cũng là một vấn đề với XP. Nó chỉ xuất hiện trở lại với tôi trong Windows 7 khi tôi kết hợp một cỗ máy phát triển mới. Rõ ràng nó đã không được sửa chữa bởi Microsoft.
Rõ ràng ngay cả MS đã xác định các biến như% ProgramFiles% sẽ không mở rộng chính xác trong PATH.
Trang này cung cấp câu trả lời có thể nếu bạn đang đặt PATH thông qua tệp dòng lệnh hoặc tệp bó. .
Vì vậy - để tóm tắt, bạn có thể:
thay đổi đường dẫn (và di chuyển tất cả các tệp được liên kết) thành đường dẫn không có dấu cách hoặc
chỉnh sửa các biến không mở rộng được trong hộp thoại Biến môi trường (thay đổi chúng đủ để khiến chúng xử lý chính xác - Tôi không tích cực bao nhiêu là đủ).