การตั้งค่าตัวแปรสภาพแวดล้อมระบบจากไฟล์ batch Windows?


195

เป็นไปได้ไหมที่จะตั้งค่าตัวแปรสภาพแวดล้อมที่ระดับระบบจากพรอมต์คำสั่งใน Windows 7 (หรือแม้แต่ XP สำหรับเรื่องนั้น) ฉันกำลังเรียกใช้จากพรอมต์คำสั่งที่ยกระดับ

เมื่อฉันใช้setคำสั่ง ( set name=value) ตัวแปรสภาพแวดล้อมดูเหมือนจะใช้ได้เฉพาะกับเซสชันของพรอมต์คำสั่งเท่านั้น

คำตอบ:


179

เครื่องมือสนับสนุน XP (ซึ่งสามารถติดตั้งได้จากซีดี XP ของคุณ) มาพร้อมกับโปรแกรมที่เรียกว่า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

ฉันคิดว่า Windows 7 นั้นมาพร้อมกับsetxการติดตั้งมาตรฐาน


7
Windows 7 (อาจเป็น Vista อยู่แล้ว) มีมาตรฐาน setx มีการเปลี่ยนแปลงเล็กน้อยหรือไม่? ไม่มีการ-iตั้งค่าสถานะและการเรียกใช้setx /?แสดงความช่วยเหลือ + ตัวอย่างทั้งหมด
stijn

3
จำไว้ว่าคุณสามารถตรวจสอบเพื่อดูว่าคุณมีโปรแกรมนี้อยู่บนเส้นทางของคุณโดยพิมพ์whereแล้วชื่อของโปรแกรม (ดังนั้นในกรณีนี้where setx.exeในการทดสอบนี้ในกล่อง Server 2008 และ Server 2008SP2 ฉันพบว่าในทั้งสองกรณีมันมีอยู่ที่%windir%\System32\setx.exe
aolszowka

2
@stijn - รุ่น Win7 ยังมีการเปลี่ยนแปลงอย่างเป็นทางการ introducer ธงจากการทับ- /อย่างไรก็ตามดูเหมือนว่า-เวอร์ชั่นจะยังใช้งานได้
TED

2
ดูเหมือนว่าจะมีความยาว 1024 จำกัด สำหรับเนื้อหาตัวแปร setx
zhy2002

setx ที่ให้บริการโดยเครื่องมือสนับสนุน XP SP2 ต้องใช้เครื่องหมายทับ/ซ้ายและเส้นประ-ไม่ทำงาน setx variable value /m
Keith

137

ตัวอย่างง่าย ๆ สำหรับวิธีตั้งค่า JAVA_HOME ด้วยsetx.exeในบรรทัดคำสั่ง:

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

สิ่งนี้จะตั้งค่าตัวแปรสภาพแวดล้อม "JAVA_HOME" สำหรับผู้ใช้ปัจจุบัน หากคุณต้องการตั้งค่าตัวแปรสำหรับผู้ใช้ทั้งหมดคุณต้องใช้ตัวเลือก "-m" นี่คือตัวอย่าง:

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

หมายเหตุ : คุณต้องดำเนินการคำสั่งนี้ในฐานะผู้ดูแลระบบ

หมายเหตุ : ตรวจสอบให้แน่ใจว่าได้รันคำสั่งsetxจากหน้าต่าง Admin-line command


7
โปรดทราบว่าเครื่องมือบางอย่างไม่ชอบช่องว่างใน JAVA_HOME ดังนั้นมันจึงคุ้มค่าที่จะใช้Progra~1ดังนี้: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael

1
ชีวิตของฉันอยู่ที่ไหน
Philip Rego

20

หากคุณตั้งค่าตัวแปรผ่าน SETX คุณจะไม่สามารถใช้ตัวแปรนี้หรือเปลี่ยนแปลงได้ทันที คุณต้องรีสตาร์ทกระบวนการที่ต้องการใช้

ใช้ลำดับต่อไปนี้เพื่อตั้งค่าโดยตรงในกระบวนการตั้งค่าด้วย (ใช้ได้กับฉันอย่างสมบูรณ์ในสคริปต์ที่ทำบางสิ่งเริ่มหลังจากตั้งค่าตัวแปรส่วนกลาง) :

SET XYZ=test
SETX XYZ test

ขอบคุณนี่ทำให้ฉันเป็นบ้า! CMD.EXE ต้องการการอัปเกรดเพื่อทำตัวเหมือนคอนโซลปกติ ... !
Salvador Valencia Valencia

ฉันไม่ได้รับสิ่งนี้: ฉันจะรัน 2 บรรทัดเหล่านั้นได้ที่ไหน
Danijel

1
คุณยังสามารถเรียกใช้งานคำสั่งrefreshenvหลังจากใช้ setx เพื่อใช้ประโยชน์จากตัวแปรใหม่
BrianHVB

@BrianHVB refreshenvไม่รู้จักเป็นคำสั่ง คุณกำลังทำสิ่งนี้ในcmdหรือpowershellไม่? (แก้ไข: ทดสอบทั้งสองจริงไม่ทำงานในคอนโซลใด)
bigp

@ ใหญ่โอ๊ะคุณพูดถูก มันเป็นคำสั่งที่ถูกเพิ่มเมื่อติดตั้ง chocolatey ฉันมีช็อคโกแลตในทุกระบบของฉันและไม่ได้ตระหนักจนกว่าฉันจะดูมัน
BrianHVB

2

สำหรับ XP ฉันใช้เครื่องมือ (free / donateware) ชื่อ "RAPIDEE" (Rapid Environment Editor) แต่ SETX นั้นเพียงพอสำหรับ Win 7 (ฉันไม่เคยรู้มาก่อน)


2

ตัวแปรระบบสามารถตั้งค่าผ่าน CMD และรีจิสทรีสำหรับอดีต แบบสอบถาม reg "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v เส้นทาง

ทั้งหมดที่ใช้กันทั่วไปรหัส CMD และตัวแปรระบบจะได้รับที่นี่: ชุดของ Windows ตัวแปรสภาพแวดล้อมของระบบโดยใช้ CMD

เปิด CMD แล้วพิมพ์Set

คุณจะได้รับค่าทั้งหมดของตัวแปรระบบ

พิมพ์set javaเพื่อทราบรายละเอียดพา ธ ของ java ที่ติดตั้งบนหน้าต่างระบบปฏิบัติการของคุณ


1

ในกรณีที่คุณจะต้องลบตัวแปรคุณสามารถใช้ setenv จากวินเซนต์ Fatica ใช้ได้ที่http://barnyard.syr.edu/~vefatica ไม่ล่าสุด ('98) แต่ยังคงทำงานกับ Windows 7 x64


5
setx ช่วยให้คุณสามารถลบได้โดยการตั้งค่าให้ว่างเปล่า
Steve Lloyd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.