ฉันจะผนวกตัวแปรสภาพแวดล้อมที่ผู้ใช้กำหนดเองต่อท้ายตัวแปรระบบ PATH ใน Windows 7 ได้อย่างไร


9

ฉันมีตัวแปรที่ผู้ใช้กำหนดสองประการ:

ANT_HOME ตั้งค่าเป็น   % USERPROFILE% \ ผู้พัฒนา \ Tools \ Apache \ Apache   Ant \ apache-ant-1.8.2 JAVA_HOME ตั้งค่าเป็น   C: \ Program Files \ Java \ jdk1.6.0_23

และฉันต้องการผนวกเส้นทางเหล่านั้นไปยังตัวแปรระบบเพื่อให้ฉันสามารถเข้าถึงไฟล์ปฏิบัติการในโฟลเดอร์ bin ของพวกเขา ฉันเหนื่อย

PATH ตั้งค่าเป็น [อื่น ๆ   เส้นทาง];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

อย่างไรก็ตามนั่นไม่ได้ผล เมื่อฉันเปิดพรอมต์คำสั่งและ echo% PATH% ตัวแปรผู้ใช้จะไม่ถูกขยาย . ดังนั้นเส้นทางจะแสดงตัวอักษร,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

ฉันดูเหมือนจะจำได้ว่าทำงานได้ดีในระบบ Windows XP เก่า ฉันจะตั้งค่านี้ใน Windows 7 ได้อย่างไร


ฉันเพิ่งพบบทความสนับสนุนของ Microsoft จากทางย้อนกลับไปในปี 2007 อธิบายข้อผิดพลาดใน Shell32.dll ฉันเพิ่มตัวแปร PATH ลงในรายการตัวแปรผู้ใช้ของฉันโดยตั้งค่า PATH เป็น% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin และแก้ไขปัญหา ฉันไม่ชอบการตั้งค่าสำหรับผู้ใช้ของฉัน แต่อย่างใดระบบของฉันกำลังแสดงอาการของข้อบกพร่องเก่านี้และฉันยังไม่เห็นคำตอบที่ดีกว่านี้อีก บทความอยู่ที่: support.microsoft.com/kb/329308
Michael Prescott

คำตอบ:


5

UPDATE NO.2 - ตอนนี้ถึง ที่จริง คำถาม: ทำไมตัวแปรที่ซ้อนกันและสร้างโดยผู้ใช้ไม่สามารถขยายได้

มีปัญหาทั่วไปเกี่ยวกับการขยายตัวของตัวแปรใน Windows ฉันพบปัญหาเดียวกันแล้วและไม่พบสถานการณ์ที่ชัดเจนและทำซ้ำได้ - ระดับการเรียกซ้ำที่การขยายล้มเหลวไม่สอดคล้องกันอักขระพิเศษดูเหมือนจะไม่ได้มีบทบาท ฯลฯ

วิธีแก้ปัญหาที่ทำงานได้เท่านั้นที่ฉันพบคือการเพิ่มระดับการเรียกซ้ำตัวแปรตามระดับการเรียกซ้ำ ซึ่งหมายความว่า: ลองลบตัวแปรทั้งหมดที่คุณต้องการซ้อนเข้าด้วยกัน (รวมถึงการโทรจาก PATH ไปยังตัวแปรที่ผู้ใช้กำหนด) จากนั้นเริ่มต้นใหม่ กำหนดตัวแปรพื้นฐานของคุณ (ฯลฯ ANT-HOME) ส่งมอบตรวจสอบว่ามันขยายถ้าเป็นไปต่อไปด้วยระดับถัดไปกระทำตรวจสอบ ... คุณได้รับความคิด

อัพเดตคำตอบ - การกำหนดตัวแปรสภาพแวดล้อมถาวรโดยใช้ CLI และ GUI - เลื่อนลงเพื่อดูคำตอบต้นฉบับ

วิธี GUI:

ใน Windows 7 เพียงพิมพ์ "system" ใน META-Prompt และคุณจะเห็นรายการ "แก้ไขตัวแปรสภาพแวดล้อมของระบบ" จากนั้นคลิก "ตัวแปรสภาพแวดล้อม" ที่นั่นคุณสามารถแก้ไขตัวแปรระบบ PATH (รายการด้านล่าง) หรือเพิ่ม / แก้ไขตัวแปร PATH ใหม่ให้กับตัวแปรสภาพแวดล้อมของผู้ใช้

วิธีบรรทัดคำสั่ง:

ในการเปลี่ยนตัวแปรสภาพแวดล้อมอย่างถาวรคุณต้องใช้คำสั่ง SETX ในบรรทัดคำสั่งของ Windows ซึ่งแตกต่างจาก Windows รุ่นอื่น ๆ มันมาพร้อมกับ Windows 7 ไวยากรณ์ของมันแตกต่างจาก SET มาก แต่ก็มีประสิทธิภาพเช่นกัน คุณจะต้องระวังให้ดีแม้ว่าจะเป็นเรื่องง่ายที่จะทำให้ตัวแปรของคุณยุ่งเหยิงด้วย SETX

  • ตามค่าเริ่มต้นคุณจะเปลี่ยน ตัวแปรผู้ใช้ . คุณสามารถมีตัวแปรสภาวะแวดล้อม PATH ของผู้ใช้ที่อยู่ร่วมกับตัวแปร PATH ของระบบอย่างมีความสุข หากคุณยังไม่ได้กำหนดไว้ให้ทำโดยพิมพ์: SETX PATH yourpath

  • คุณยังสามารถเพิ่มค่าให้กับตัวแปรระบบ PATH เมื่อต้องการทำสิ่งนี้คุณต้องแสดงบรรทัดคำสั่งด้วยสิทธิ์ผู้ดูแลระบบก่อน เมื่อต้องการทำสิ่งนี้ให้กดปุ่ม Meta (Windows) พิมพ์ cmd และตี CTRL + SHIFT + ENTER และยืนยันไดอะล็อก UAC

ในการเพิ่มค่าใหม่ให้กับเส้นทางคุณสามารถป้อนได้แล้ว

setx path "%path%;yournewpath" /m

การติดตามไวยากรณ์นั้นเป็นสิ่งสำคัญ! หากคุณไม่รวม% path% ก่อนค่าของเส้นทางที่มีอยู่ทั้งหมดจะหายไปและแทนที่ด้วยเส้นทางใหม่ของคุณเท่านั้น กระบวนการ / m สลับท้ายตั้งค่าตัวแปรในสภาพแวดล้อมของระบบ

โปรดทราบว่าคุณจะต้องเรียกใช้บรรทัดคำสั่งใหม่เพื่อใช้ประโยชน์จากตัวแปรใหม่ของคุณ

นอกจากนี้ยังมี การอ้างอิงแบบเต็มสำหรับ SETX ที่ TechNet .

คำตอบเดิม ๆ ชุดคำสั่งจะอัพเดตตัวแปรสำหรับช่วงเวลาของเซสชันบรรทัดคำสั่งปัจจุบันเท่านั้น

ไวยากรณ์ที่ถูกต้องสำหรับการเพิ่มค่าให้กับตัวแปรคือ 'set [variable] =% [variable]%; [new value] `

โปรดทราบว่าด้านซ้ายของเครื่องหมายเท่ากับคุณต้องข้ามเครื่องหมายเปอร์เซ็นต์

ที่มา: การอ้างอิงบรรทัดคำสั่ง TechNet สำหรับ Windows Server


1
ขอบคุณสำหรับคำตอบที่ละเอียดมาก ๆ โดยส่วนตัวฉันชอบวิธี GUI เพราะฉันคิดว่าการสื่อสารกับทีมของฉันง่ายขึ้น ฉันได้เน้นปัญหาที่ฉันมีในโพสต์ต้นฉบับของฉันเพื่อความชัดเจน ตัวแปรผู้ใช้ไม่ได้ขยายใน Windows 7 เช่นเดียวกับที่ทำใน Windows XP สิ่งนี้ไม่ทำงานอีกต่อไปหรือฉันควรตรวจสอบความปลอดภัยหรือการตั้งค่าผู้ดูแลระบบอื่น ๆ ที่อาจปิดกั้นการทำงานปกติหรือไม่
Michael Prescott

นั่นเป็นวิธีที่ดีมากในการพูดว่า "คุณอยู่ข้างจุด";)
Tobias Plutat

... และตอนนี้ 2 เซ็นต์ของฉันกับคำถามจริง ดูคำตอบล่าสุด
Tobias Plutat

1

บทความสนับสนุนของ Microsoft ตั้งแต่ปี 2550 - หมายเลข 329308 - อธิบายข้อผิดพลาดใน Shell32.dll ซึ่งเป็นสาเหตุของปัญหานี้ ทางออกคือการเพิ่ม PATH ตัวแปรไปยังรายการตัวแปรผู้ใช้ที่ตั้งค่าเป็น

%ANT_HOME%\bin;%JAVA_HOME%\bin

วิธีนี้แก้ไขปัญหาได้ ฉันไม่ชอบการตั้งค่าสำหรับผู้ใช้ของฉัน แต่อย่างใดระบบของฉันกำลังแสดงอาการของข้อบกพร่องเก่านี้และฉันยังไม่เห็นคำตอบที่ดีกว่า

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