Đặt hoặc sửa đổi biến môi trường (toàn hệ thống) trong cmd.exe


13

Tôi đang tìm kiếm một cách thuận tiện để thêm và / hoặc sửa đổi và / hoặc xóa một biến môi trường khỏi dòng lệnh. Đặc biệt, tôi thấy mình có lúc gặp tình huống khi phải thêm một vài biến trong cmd.exe.

Tôi rất biết ơn nếu ai đó chỉ cho tôi một cách không phải GUI để sửa đổi (đó là: thêm một thư mục mới vào) %PATH%biến.

Thay đổi phải là vĩnh viễn, không chỉ trong thời gian của cmdphiên.


1
Tôi nghĩ một vấn đề bạn sẽ thấy là hầu hết các thay đổi đối với các biến môi trường toàn hệ thống , vĩnh viễn đều yêu cầu đăng xuất / đăng nhập (hoặc khởi động lại) cho phiên của người dùng để sử dụng các giá trị được sửa đổi.
quack quixote

Câu trả lời:


8

Phương pháp Old School trực tiếp thao tác các biến đăng ký với lệnh reg là trên tiền. Đây là cách bạn làm điều đó:

reg add HKCU\Environment /v PATH /d "%addonpath%;%path%" /f

Ném nó vào một tập lệnh một dòng gọi là apath.bat trông như thế này:

@echo off
reg add HKCU\Environment /v PATH /d "%~dp0;%path%" /f

Sau đó, tất cả những gì bạn cần cung cấp là đường dẫn của thư mục mới mà bạn đang thêm khi gọi tập lệnh và bạn đã quay số:

ví dụ: apath.bat% addonpath%

Mặc dù Hinch nói đúng. Cách tốt nhất để làm điều đó nếu bạn đang sử dụng Vista trở lên là sử dụng lệnh SETX được thiết kế để cho phép chúng tôi truyền bá các biến môi trường mà không có nguy cơ thao túng trực tiếp sổ đăng ký bằng lệnh reg có thể giúp bạn tiết kiệm máy nếu bạn thao tác các biến ENV đủ để sử dụng nó một cách nhanh chóng.


Lệnh này có yêu cầu khởi động lại không?
Juzer Ali

Không, nhưng bạn phải sử dụng quy trình (cmd) mới.
chước

1
Đối với tôi, nó cần khởi động lại? tại sao? Tôi đang dùng Windows XP, sp3.
Changwang Zhang

15

Bạn có thể sử dụng setx.

Biến người dùng:

SETX PATH "%PATH%;C:\MyDir"

Biến hệ thống:

SETX PATH "%PATH%;C:\MyDir" /M

Tôi tin rằng SETX có sẵn từ Vista, nhưng tôi đang dùng XP.
René Nyffalanger

bạn có thể thoát khỏi việc sao chép setx.exe từ máy Vista. có lẽ sẽ không hoạt động, nhưng nó có thể.
quack quixote

2
SETX là một phần của Công cụ tài nguyên cho Windows Server 2003. Bạn chỉ cần thêm nó vào thư mục system32 hoặc bất kỳ thứ gì khác được thêm vào đường dẫn của bạn (gà-trứng!).
paradroid

Tôi cần phần / M để tôi có thể sửa đổi biến hệ thống, không phải người dùng. Cảm ơn!
Andrei Sfat

Cả hai lệnh được chỉ định đều sai. Tại sao? Windows thực sự duy trì hai giá trị PATH: toàn hệ thống và mỗi người dùng. Khi bạn gõ echo %PATH%, bạn thấy chúng kết hợp với nhau, như thế nào <system path>;<user path>. Do đó, lệnh đầu tiên sẽ buộc các mục hiện tại của đường dẫn hệ thống xuất hiện trong đường dẫn người dùng (không quá tệ), trong khi lệnh thứ hai sẽ khiến các mục hiện tại của đường dẫn người dùng xuất hiện trong đường dẫn hệ thống (không thể chấp nhận được).
Sasha

1

Bạn có thể sử dụng HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorunkhóa đăng ký để trỏ vào một tệp bó, để cho phép bạn thực hiện các thay đổi bán vĩnh viễn mà không cần đi sâu vào các hộp thoại cài đặt phức tạp.


Theo như tôi biết, điều đó sẽ chỉ ảnh hưởng đến các lệnh tiếp theo của cmd.exe (không có cờ / d), chứ không phải toàn bộ hệ thống hoặc các quá trình khác (sau đó được gọi).
René Nyffalanger

Đúng rồi. Tôi thấy rằng đó là một lợi thế, có nghĩa là bạn có thể làm nhiều hơn với nó mà không phải lo lắng về các quy trình khác nhau không biết phải làm gì. Tuy nhiên, nó sẽ hoạt động trong bất kỳ dấu nhắc tương tác nào, luôn luôn tốt đẹp: P
Phoshi

1

Nếu bạn không muốn sử dụng GUI (như trong Bảng điều khiển, Hệ thống, Nâng cao, Biến môi trường, PATH), bạn có thể sử dụng REGđể đặt HKCU\Environment\PATH.

  • cập nhật %PATH%
  • REG ADD HKCU\Environment /v PATH /t REG\_EXPAND\_SZ /d "%PATH%" /f

Các /flực lượng ghi đè giá trị hiện có để bạn không phải trả lời tương tác câu hỏi.

Chỉnh sửa: %PATH% cần được trích dẫn.

Chỉnh sửa: Điều đáng chú ý là điều này có thể yêu cầu khởi động lại hoặc đăng nhập lại trước khi nó có hiệu lực. Trong khi thay đổi nó trong GUI có hiệu lực ngay lập tức (đối với các cmd.exephiên mới ).

Tham khảo: http://support.microsoft.com/kb/104011

Như đã lưu ý trong tài liệu tham khảo, nếu bạn muốn viết một số mã, bạn có thể gửi WM_SETTINGCHANGE và điều đó sẽ tránh yêu cầu đăng nhập / đăng xuất.


Điều đó sẽ rất hữu ích. Nhưng, nếu tôi truy vấn biến đó, nó sẽ không trả về bất cứ thứ gì.
PA.

Hrm. Trên XP Pro SP3 English, tôi nhận được PATH của mình với : REG QUERY HKCU\Environment /v PATH.
opello

đó là đường dẫn dành riêng cho người dùng, không phải đường dẫn toàn hệ thống. không chắc người đó sống ở đâu chúng có thể được đặt thành cùng một thứ nhưng thường chứa những thứ riêng biệt (và con đường làm việc của bạn là sự hợp nhất của cả hai).
quack quixote

Phải, nó ở HKCU. Bài viết Microsoft KB được liên kết có cả hai vị trí đăng ký.
opello

1
Đây gần như là thứ tôi đang tìm kiếm ... nếu có một cách để gửi WM_SETTINGCHANGE từ cmd.exe.
René Nyffalanger

0

Thật dễ dàng để thay đổi đường dẫn trong quy trình cmd.exe hiện tại:

PATH c:\MyNewDirectory;%PATH%

Bạn luôn có thể thực hiện TRỢ GIÚP để được trợ giúp về lệnh PATH.


1
Điều này không chỉ tốt cho phiên thôi sao?
JL.

vâng, điều này không tồn tại qua các phiên.
John T

JL đã đúng và tôi đang tìm kiếm một giải pháp lâu dài. Tôi đã chỉnh sửa câu hỏi của tôi cho phù hợp.
René Nyffalanger

0

Để thực sự thay đổi vĩnh viễn, toàn hệ thống, bạn thực sự muốn sử dụng bảng điều khiển Hệ thống (còn gọi là Máy tính của tôi -> Thuộc tính -> Nâng cao -> Biến môi trường, cho WinXP). Các cài đặt ở đó ảnh hưởng đến toàn bộ hệ thống của bạn, bao gồm các chương trình GUI trong trình bao Explorer.

Nếu bạn chỉ cần những thay đổi này trong trình cmd.exebao, bạn có thể chạy một tệp dữ liệu đặt chúng bất cứ khi nào bạn bắt đầu một cửa sổ cmd.exe. Câu trả lời của Phoshi đề cập đến HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun, có vẻ như là một lựa chọn tuyệt vời - dễ dàng thực hiện các thay đổi nhỏ và chạy lại từ dòng lệnh nếu bạn cần. Nhưng điều này sẽ không ảnh hưởng đến các cửa sổ GUI hoặc trình bao Explorer.

Tôi thực sự ngạc nhiên khi Sysiternals không có tiện ích có khả năng để làm việc này. Có lẽ một PStools khác có thể làm điều đó?


0

Rất nhiều cách để làm điều này. REG ADD là một hoặc ĐĂNG NHẬP (sử dụng tệp .REG được xuất từ ​​máy tính khác). SETX / M là khác. Bạn cũng có thể đẩy nó ra bằng cách sử dụng Tùy chọn chính sách nhóm (cách dễ nhất cho số lượng lớn máy tính)


0

Một suy nghĩ khác không được đề cập ở đây, hãy tạo một tập lệnh autohotkey sẽ khởi chạy bảng điều khiển và nhập nó cho bạn. Nó hoạt động tốt nếu bạn đã là người dùng AHK :-)

https://autohotkey.com/board/topic/63210-modify-system-path-gui/

Ngoài ra những gì về chỉnh sửa hklm / system / currentcontrolset001 / control / session manager / môi trường: khóa đường dẫn? Nhưng cùng một khóa nằm dưới hklm / system / currentcontrolset002 và hklm / system / currentcontrolset. Dường như điều này có thể đúng, mỗi ở đây: /programming/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install

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.