Đặt biến môi trường hệ thống từ tệp bó Windows?


195

Có thể đặt biến môi trường ở cấp hệ thống từ dấu nhắc lệnh trong Windows 7 (hoặc thậm chí XP cho vấn đề đó). Tôi đang chạy từ một dấu nhắc lệnh nâng cao.

Khi tôi sử dụng setlệnh ( set name=value), biến môi trường dường như chỉ hợp lệ cho phiên của dấu nhắc lệnh.

Câu trả lời:


179

Công cụ hỗ trợ XP (có thể được cài đặt từ CD XP của bạn) đi kèm với một chương trình có tên setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Tôi nghĩ rằng Windows 7 thực sự đi kèm setxnhư là một phần của bản cài đặt tiêu chuẩn.


7
Windows 7 (có thể là Vista) đã có tiêu chuẩn setx, với một thay đổi nhỏ? không có -icờ và chỉ chạy setx /?hiển thị tất cả trợ giúp + ví dụ
stijn

3
Hãy nhớ rằng bạn luôn có thể kiểm tra xem bạn có chương trình này trên đường không bằng cách nhập wherevà sau đó là tên của chương trình (vì vậy trong trường hợp này where setx.exekhi kiểm tra điều này trên hộp Server 2008 và Server 2008SP2 tôi thấy rằng trong cả hai trường hợp, nó tồn tại ở%windir%\System32\setx.exe
aolszowka

2
@stijn - Phiên bản Win7 cũng chính thức thay đổi giới thiệu cờ từ -dấu gạch chéo về phía trước /. Tuy nhiên, có vẻ như -phiên bản vẫn hoạt động.
TED

2
Dường như có giới hạn độ dài 1024 đối với nội dung biến setx
zhy2002

Setx được cung cấp bởi Công cụ hỗ trợ XP SP2 yêu cầu gạch chéo về phía trước /và dấu gạch ngang -không hoạt động. setx variable value /m
Keith

137

Ví dụ đơn giản cho cách đặt JAVA_HOME bằng setx.exedòng lệnh:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Điều này sẽ đặt biến môi trường "JAVA_HOME" cho người dùng hiện tại. Nếu bạn muốn đặt một biến cho tất cả người dùng, bạn phải sử dụng tùy chọn "-m". Đây là một ví dụ:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Lưu ý : bạn phải thực thi lệnh này với tư cách Quản trị viên.

Lưu ý : Đảm bảo chạy lệnh setx từ cửa sổ Quản trị dòng lệnh


7
cũng lưu ý rằng một số công cụ không thích khoảng trắng trong JAVA_HOME vì vậy nó đáng để sử dụng Progra~1như vậy: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael

1
Nơi này đã là tất cả cuộc sống của tôi.
Philip Rego

20

Nếu bạn đặt một biến qua SETX, bạn không thể sử dụng biến này hoặc các thay đổi của nó ngay lập tức. Bạn phải khởi động lại các quy trình muốn sử dụng nó.

Sử dụng trình tự sau để trực tiếp thiết lập nó trong quá trình thiết lập (hoạt động hoàn hảo với tôi trong các tập lệnh thực hiện một số công cụ init sau khi đặt biến toàn cục) :

SET XYZ=test
SETX XYZ test

Cảm ơn bạn, điều này đã khiến tôi phát điên! CMD.EXE rất cần một bản nâng cấp để hoạt động như một bàn điều khiển bình thường ...!
Salvador Valencia

Tôi không hiểu điều này: tôi chạy 2 dòng đó ở đâu?
Danijel

1
Bạn cũng có thể thực thi lệnh refreshenvsau khi sử dụng setx để sử dụng các biến mới.
BrianHVB

@BrianHVB refreshenvkhông được công nhận là một lệnh. Bạn đang làm điều này trong cmdhay powershell? (EDIT: được thử nghiệm trên cả hai thực tế, không hoạt động trong cả hai bảng điều khiển)
bigp

@bigp oops, bạn nói đúng. Đó là một lệnh được thêm vào khi sô cô la được cài đặt. Tôi có sô cô la trên tất cả các hệ thống của tôi và đã không nhận ra cho đến khi tôi nhìn nó.
BrianHVB

2

Đối với XP, tôi đã sử dụng một công cụ (miễn phí / donateware) có tên là "RAPIDEE" (Trình soạn thảo môi trường nhanh), nhưng SETX chắc chắn là đủ cho Win 7 (trước đây tôi không biết về điều này).


2

Các biến hệ thống có thể được đặt thông qua CMD và registry For ex. reg truy vấn "HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Control \ Trình quản lý phiên \ Môi trường" / v PATH

Tất cả các mã CMD và biến hệ thống thường được sử dụng được đưa ra ở đây: Đặt biến môi trường hệ thống Windows bằng cách sử dụng CMD .

Mở CMD và gõ Set

Bạn sẽ nhận được tất cả các giá trị của biến hệ thống.

Nhập bộ java để biết chi tiết đường dẫn của java được cài đặt trên hệ điều hành cửa sổ của bạn.


1

Chỉ trong trường hợp bạn cần xóa một biến, bạn có thể sử dụng SETENV từ Vincent Fatica có sẵn tại http://barnyard.syr.edu/~vefatica . Không chính xác gần đây ('98) nhưng vẫn hoạt động trên Windows 7 x64.


5
setx cho phép bạn cũng xóa bằng cách đặt giá trị thành trống
Steve Lloyd
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.