2013-06-20 39 views
17

tôi đã sử dụng lệnh setx thiết OGRE_HOME:cú pháp không hợp lệ với setx

setx OGRE_HOME D:\Program Files\OgreSDK 

Bây giờ tôi cần phải thay đổi giá trị của OGRE_HOME. Làm cách nào để tìm kiếm tất cả các giá trị tôi đã đặt? Nếu tôi chạy lệnh một lần nữa, nó cho thấy rằng:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s). 
+0

Không chắc chắn phải hiểu nhưng để xem tất cả các giá trị, hãy sử dụng 'set'. –

Trả lời

22

con đường của bạn đến Ogre SDK có một nhân vật không gian trong nó, được hiểu như là một dấu phân cách lập luận khác. Đắm con đường của bạn với " để giữ nó như là một đối số duy nhất để setx:

setx OGRE_HOME "D:\Program Files\OgreSDK" 

Để xem giá trị hiện tại của biến OGRE_HOME môi trường:

echo %OGRE_HOME% 

Bạn có thể phải mở một lệnh mới shell prompt để xem giá trị nếu bạn đặt nó và sau đó cố gắng xem ngay giá trị của nó.

Để xem tất cả các biến môi trường hiện đang được thiết lập, chỉ cần chạy:

set 

Để hiển thị các biến môi trường chỉ có một tiền tố nhất định (để FOO sẽ hiển thị FOOBARFOOBAZ), đặt tiền tố rằng sau set:

set PREFIX 

Hoặc, bạn có thể sử dụng GUI để chỉnh sửa biến môi trường (giả sử Windows 7 tại đây).

  • Kích chuột phải vào Computer, chọn Properties
  • Bấm Advanced system settings trong khung bên trái
  • Hãy chắc chắn rằng bạn đang trên đường Advanced tab trong cửa sổ pop-up hộp thoại
  • Bấm Environment Variables... ở dưới cùng

Một hộp thoại sẽ bật lên với biến môi trường người dùng cụ thể của bạn cũng như các biến môi trường toàn hệ thống của bạn. Chọn một giá trị và sử dụng các nút Mới/Chỉnh sửa/Xóa để tương tác với chúng.

+0

Cảm ơn bạn rất nhiều. Và tôi sẽ không bao giờ cài đặt phần mềm ở đường dẫn với nhân vật không gian, bởi vì nó có thể bắt gặp một số rắc rối mà chúng ta khó kiểm tra. –

+0

Lưu ý rằng bạn cũng cần "" nếu bạn đang sử dụng% PATH% (cho phần phụ). – Andrew

0

Là phụ lục cho @ajp15243's answer. Nếu bạn đang làm việc cùng với PowerShell chứ không phải là command prompt hoặc tập tin thực thi, bạn sẽ cần phải gọi SETX với một hàng đầu thoát ký tự hai báo giá, như trong:

$my_path = "%PROGRAMFILES%\MySQL\MySQL Server 5.7\bin\" 
$hkcu_path = (Get-ItemProperty hkcu:\Environment).PATH + ";" + $my_path 
SETX PATH "`"$hkcu_path" # note the leading escaped quote 

Tuy nhiên làm như vậy, có thể dẫn đến thêm một trailing nháy kép vào giá trị của hkcu:\Environment\PATH, vì vậy bạn có thể cần phải làm điều này quá:

$dirty_path = (get-itemproperty hkcu:\Environment).PATH 
$clean_path = $dirty_path -replace '"','' 
SETX PATH $clean_path 
1

Command Prompt là tạo cho bạn lỗi rằng vì bạn quên dấu ngoặc kép.Bạn nên đã gõ:

setx OGRE_HOME “D:\Program Files\OgreSDK” 

Để xem tất cả các giá trị mà bạn đã thiết lập, nhập một trong hai:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 

HOẶC

reg query HKEY_CURRENT_USER\Environment 
1

setx và khá nhiều tất cả các cửa sổ dòng lệnh lệnh rất nhạy cảm với các ký tự đặc biệt nhất định. Trong số đó có ký tự không gian nhưng cũng có báo giá được sử dụng để phân định một mục nhập.

Như @ ajp15243 đã nói, bạn có thể xử lý không gian bằng cách khóa đường dẫn giữa hai trích dẫn. Nhưng nếu bạn có những con đường và những con đường đó đã có trích dẫn bởi vì họ mang một không gian? Dưới đây là ví dụ:

MY_PATHS="c:\Program Files\path1";"c:\Program Files(x86)\Path2" 

Trong trường hợp này, bạn sẽ phải đặt ký tự thoát cho các dấu ngoặc kép bên trong khi bạn sử dụng setx hoặc nó sẽ bị nhầm lẫn và đưa ra lỗi bạn đã liệt kê. Ví dụ:

setx -m MY_PATHS "\"c:\Program Files\path1\";\"c:\Program Files(x86)\Path2\"" 
Các vấn đề liên quan