ตัวแปรสภาพแวดล้อมมีขนาดใหญ่เกินไปใน Windows 10


147

ฉันรู้ว่ามันแปลกและฉันใช้เวลาเกือบ 3 วันในการค้นหาวิธีแก้ปัญหาออนไลน์โดยไม่ได้รับประโยชน์ ฉันเลยตัดสินใจมาที่นี่

ฉันเพิ่งอัพเกรดเป็น Windows 10 จาก Windows 8.1

ตอนนี้ฉันต้องการตั้งค่าตัวแปรสภาพแวดล้อมสำหรับการติดตั้ง Apache Maven ใหม่

ทุกครั้งที่ฉันสร้างตัวแปรผู้ใช้สิ่งต่าง ๆ ก็ดี อย่างไรก็ตามฉันยังต้องสร้างตัวแปรระบบที่ฉันจะต้องผนวกไดเรกทอรีช่องเก็บกับตัวแปรที่ฉันเป็นผู้สร้างในตัวแปรผู้ใช้เพื่อให้เป็น "เส้นทาง"

ตอนนี้ทุกครั้งที่ฉันทำสิ่งนี้ฉันจะได้รับข้อความแสดงข้อผิดพลาดที่ระบุว่า "ตัวแปรสภาพแวดล้อมนี้มีขนาดใหญ่เกินไปด้วยเหตุนี้ฉันจึงไม่สามารถสร้างเส้นทางได้

ฉันได้แนบภาพข้อผิดพลาดนี้แล้ว

ฉันจะขอบคุณสิ่งนี้ถ้าใครสามารถช่วยฉันแก้ปัญหานี้ได้

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของคุณป้อนคำอธิบายรูปภาพที่นี่


14
ฉันหวังว่าพวกเขาจะแก้ไขวันนี้ สิ่งนี้ไม่ควรเกิดขึ้น ^^
itmuckel

1
ทางออกที่ถูกต้องสำหรับแอปพลิเคชันเพื่อหยุดการใช้PATHตัวแปรสภาพแวดล้อมในทางที่ผิด วิธีการแก้ปัญหาที่เหมาะสมมีอยู่เกือบ 2 ทศวรรษที่ผ่านมาในขณะนี้ แต่การพัฒนาให้ใช้มันก็เหมือนกับการถอนฟัน
Ian Boyd

คำตอบ:


148

เมื่อตัวแปร PATH โอเวอร์โหลดด้วยค่ามากเกินไปมันจะไปถึงจุดที่คุณไม่สามารถเพิ่มค่าได้อีก การลองสิ่งต่อไปนี้ควรช่วยแก้ปัญหาของคุณ

โซลูชันที่ 1:

  1. สร้างตัวแปรระบบใหม่ว่า 'NEWPATH'
  2. กำหนดตำแหน่งไดเร็กทอรี bin ให้กับ 'NEWPATH'
  3. ต่อท้าย ' ; % NEWPATH% 'ไปยังตัวแปร PATH

หากยังไม่สามารถใช้งานได้ให้ลองคัดลอกบางส่วนของตัวแปร PATH ที่มีอยู่แล้วใน 'NEWPATH' แล้วเพิ่ม 'NEWPATH' ต่อท้าย

โซลูชันที่ 2:

ตรวจสอบค่าของตัวแปร PATH หากคุณสามารถจัดกลุ่มและทำให้เส้นทางสั้นลง ตัวอย่างเช่น,

Server \ 102 \ Tools \ Binn \; SQL Server \ 102 \ Tools \ Binn \; SQL Server \ 102 \ DTS \ Bin \; Files \ Microsoft C: \ Program

สามารถรวมกับ

เซิร์ฟเวอร์ SQL Files \ Microsoft C: \ Program;

ด้วยวิธีนี้คุณสามารถสร้างพื้นที่มากขึ้นในตัวแปร PATH ที่มีความยาวคงที่และในที่สุดก็ปรับตำแหน่งไดเรกทอรีถังขยะของคุณเป็น PATH

หวังว่านี่จะช่วยคุณได้!


ใช่คุณถูกต้องมาก มีงานวิจัยมากมายแสดงให้ฉันเห็นว่าตัวแปรพา ธ สามารถรับได้เพียง 2048 ตัวอักษรและเมื่อตัวละครมาถึงขั้นตอนนี้ตัวแปรพา ธ จะไม่สามารถรับตัวละครได้อีกมาก ดังนั้นฉันจึงลองทำตามที่คุณแนะนำและตอนนี้ฉันก็โอเคแล้ว ขอบคุณ
olammy

ขอบคุณ! นั่นเป็นความคิดที่ดี @ โซลูชัน 1! ควรจะได้คิดว่าตัวเอง ... :)
Dev-iL

2
มันใช้งานได้เหมือนมีเสน่ห์ขอบคุณ! อย่างไรก็ตามจะต้องระมัดระวังเมื่อใช้setx PATHเพราะสิ่งนี้จะแก้ไขโดยตรง%NEWPATH%และสตริงผลลัพธ์จะยาวเกินไปอีกครั้ง ... ดังนั้นการใช้วิธีการนี้เฉพาะการโต้ตอบและไม่ควรใช้บรรทัดคำสั่ง
IceFire

1
@SwapnilKamat นี้ไม่ได้สมบูรณ์ทำงาน: ผมใช้ miktex มันpdflatexจะต้องมีในPATHถ้าฉันใส่สถานที่ตั้งของpdflatexในNEWPATH, pdflatexก็ไม่พบอีกต่อไป ( "คำสั่งpdflatexไม่รับรู้" ... )
Olorin

7
กระแทกแดกดัน Microsoft SQL Server ตั้งค่าตัวแปรเส้นทางมากมายที่อยู่คนเดียวเกือบเติมพื้นที่ ฉันสร้างตัวแปร PATHS_MSSQL แล้วเพิ่ม% PATHS_MSSQL% ไปยังตัวแปร PATH เพื่อแทนที่ เพิ่มพื้นที่ว่างจำนวนมากในตัวแปร PATH
Steve Lloyd

49

มีสองสามวิธีในการล้างตัวแปรพา ธ ของคุณ ที่ง่ายที่สุดคือการใช้ตัวแก้ไขสิ่งแวดล้อมอย่างรวดเร็ว ยูทิลิตี้ฟรีนี้จะ

  1. ลบเส้นทางที่ซ้ำกัน (คลิกขวา> เส้นทางการล้างข้อมูล)
  2. ลบโฟลเดอร์ที่ไม่มีอยู่ (แสดงเป็นสีแดงซึ่งคุณต้องลบด้วยตนเอง)
  3. แทนที่เส้นทางยาวด้วยเส้นทางสั้น (คลิกขวา> ยาวเป็นเส้นทางสั้น)

ฉันทำตามขั้นตอนข้างต้นตามลำดับและใช้ขั้นตอนที่ 3 เท่านั้นสำหรับเส้นทางที่ยาวที่สุดจนกว่าขนาดตัวแปรเส้นทางจะอยู่ในการควบคุมอีกครั้ง

ถ้าคุณต้องการที่จะก้าวไปอีกขั้นต่อไปนี้เป็นเครื่องมือ C # ขนาดเล็กที่คุณสามารถปรับเปลี่ยนเป็นตรรกะอื่น ๆ ที่คุณต้องการนำไปใช้


ก่อนที่จะอ่านโพสต์นี้ฉันไม่เคยได้ยินเครื่องมือใดเลย แต่ดีใจที่มี ขอบคุณสำหรับการแบ่งปัน!
James Shaw

2
เครื่องมือนี้ยอดเยี่ยมมาก! MS ควรเป็นบรรณาธิการอย่างเป็นทางการที่มาพร้อมกับ windows!
burzum

35

วิธีการแก้ปัญหาอื่น ๆ หรือมากกว่าเพื่อหลีกเลี่ยงข้อจำกัดความยาวของตัวแปรสภาพแวดล้อมเส้นทางคือการจัดการเส้นทางของคุณ (เพิ่มลบหรือปรับปรุง) โดยใช้PowerShellสคริปต์

  1. จับตัวแปร PATH ปัจจุบันโดยคลิก "แก้ไขข้อความ" (ดูภาพหน้าจอด้านบน) และคัดลอกไปยังคลิปบอร์ดของคุณและบันทึกไว้ในไฟล์ข้อความเพื่อสำรองข้อมูลด้วยเพื่อหลีกเลี่ยงความประหลาดใจที่ไม่ดี สิ่งนี้ไม่ได้บังคับ แต่จะช่วยให้คุณสามารถกู้คืนได้หากมีสิ่งผิดปกติ

  2. หลังจากที่สำรองข้อมูลแล้วให้เพิ่มไฟล์ต่อไปนี้ในไฟล์ PowerShell (.ps1) ใหม่ (แก้ไขบรรทัดแรกด้านล่างด้วยพา ธ โฟลเดอร์ที่คุณต้องการเพิ่ม (ส่วนหลังเครื่องหมาย +):

    $ newPath = $ env: Path + '; C: \ Users .... \ FirstFolderToAddToPath; C: \ Users .... \ SecondFolderToAddToPath'

    [สิ่งแวดล้อม] :: SetEnvironmentVariable ("Path", $ newPath, "Machine")

    $ env: Path = $ newPath

นี่คือวิธีที่ฉันจัดการเพื่อให้ตัวแปร PATH ของฉันกลับมาหลังจากเล่นกับ Windows 10 UI โดยมีข้อ จำกัด ด้านความยาวและทำให้เส้นทางส่วนใหญ่ของฉันหายไป ฉันหวังว่ามันจะช่วย


ขอบคุณ .. มันง่ายมาก อยากรู้อยากเห็นความแตกต่างระหว่างการกำหนดค่าในบรรทัดที่ 2 และ 3
Nayak

บรรทัดที่ 3 ตั้งค่าในเซสชันปัจจุบันบรรทัดที่ 2 ตั้งเป็นค่าเริ่มต้นของเครื่อง
Tetsujin no Oni

2
PS ใช้งานได้กับเส้นทางที่ยาวกว่า แต่setx /mตัดแบบเดิมเป็น 1,048 chars :( คุณยังสามารถแก้ไข path ใน text editor และทำ[Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine")คุณจะต้องใช้ admin shell
Shital Shah

เป็นไปได้ที่จะใช้ PS แต่ไม่ได้ใช้ GUI อืมมันมีเหตุผลยังไง? โหวตแล้วขอบคุณ!
ตำนาน

11

นอกเหนือจากคำตอบของ Swapnil โปรดทราบว่าคุณสามารถแก้ไขความยาวสูงสุดของตัวแปร Path ซึ่ง จำกัด ไว้ที่ 2048 อักขระ (ในขณะที่พา ธ เดียวมีขีด จำกัด ประวัติที่ 206 ตัวอักษร) ใน Windows 10 คุณทำได้โดยการตั้งค่าLongPathsEnabledรีจิสตรีคีย์เป็น 1 ซึ่งสามารถดูได้ที่นี่:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

ในการเข้าถึงการแก้ไขรีจิสทรี: พิมพ์Windows Key+RRegedit

ที่มา: https://superuser.com/a/1119980

ดูคำตอบ SuperUser นี้ได้ที่: https://superuser.com/a/1119980/327009

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


19
คำแนะนำนี้ถูกต้องหรือไม่ ความยาวสูงสุดของตัวแปร PATH (เช่นการต่อหลายเส้นทาง ) คือ 2048 ตัวอักษร 260 ตัวอักษรที่คุณกล่าวถึงเป็นความยาวสูงสุดของเส้นทางหนึ่ง พวกมันเกี่ยวข้องกัน แต่ไม่เหมือนกัน
Hendy Irawan

7

คำตอบที่ล่าช้า แต่ฉันกำลังมองหาสิ่งที่คล้ายกันและจบลงที่นี่ ฉันเปลี่ยนเส้นทางทั้งหมดเป็นตัวแปรสำหรับไฟล์โปรแกรมและ programdata (อันนี้จะช่วยประหยัดเช่น 1 ตัวอักษร แต่ไม่สำคัญเท่า)

สำหรับสิ่งที่ต้องการ nodejs ฉันเปลี่ยนเส้นทางปกติของ

C: \ Program Files \ nodejs \

ถึง

% ProgramFiles% \ nodejs \

สามารถทำได้ด้วย "C: \ Program Files (x86) \" และใช้ "% ProgramFiles (x86)% \"

มันช่วยฉันสองสามตัวละคร แต่พอมันหยุดบ่นฉันรู้สึก


7
ทำไมไม่ใช้แค่% x86% เพื่อแทนที่ "C: \ Program Files (x86)" และ% x64% เพื่อแทนที่ "C: \ Program Files" ดูเหมือนว่าเป็นวิธีที่ดีกว่ามากในการลดโอเวอร์เฮดของอักขระ
Xorcist

1
@ Xorcist - เป็นคนดี! ไม่มีความคิดเกี่ยวกับสิ่งเหล่านั้น
mark1234

ฉันไม่คิดว่าจะมีอยู่ตามค่าเริ่มต้น แต่คุณสามารถสร้างได้เอง
Gabriel Fair

ฉันก็ทำเช่นนั้นฉันสร้าง% PF% สำหรับ "c: \ Program FIles" และใช้งานประมาณ 20 ครั้งทำให้ฉันสามารถตัดเส้นทางให้สั้นลงได้
LaBracca

@Xorcist ทำอย่างไรโดยการสร้างตัวแปรอื่น
Demodave

5

ฉันพบว่าคุณสามารถทำได้ผ่าน PowerShell

[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")

ดังนั้นฉันจึงคว้า PATH ของระบบที่มีอยู่วางลงในแผ่นจดบันทึกเพิ่มสิ่งใหม่ของฉันแล้ววางลงในบิต "C: \ Program Files" จากด้านบน อัปเดตพา ธ แล้ว เสร็จสิ้น


4

ลองแก้ไขโดยregeditในกรณีของฉันมันใช้งานได้เมื่อความยาวมากกว่า 3000

กดWin + Rและเข้าไปregeditเพื่อเปิด regedit ไปที่Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentและปรับเปลี่ยนค่าของPathเส้นทางของคุณ และรีสตาร์ทคอมพิวเตอร์มันควรจะทำงาน


1
มันใช้ได้ดีสำหรับฉัน ฉันคิดว่ามันง่ายกว่าวิธีอื่น
shalitha senanayaka

1

การแก้ปัญหา:

กรุณารีสตาร์ทระบบ หลังจากรีสตาร์ทระบบ PATH จะไม่ว่างเปล่าอีกต่อไป แต่อาจได้รับการตัดให้เหลือเพียง 2047 (4095) ตัวอักษรหากระบบรีสตาร์ทไม่ช่วยได้โปรด:

เปิด c: \ windows \ system32 \ regedit.exe ไปที่กลุ่มรีจิสทรี "Manager Manager \ Environment HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session \ Manager \ Environment" ล้างค่าไดเรกทอรีที่ไม่จำเป็นออกจากคีย์ "เส้นทาง" รีสตาร์ทระบบ

หมายเหตุ: ในบางกรณีหากระบบไม่สามารถเริ่มโปรด:

เข้าสู่ระบบในเซฟโหมดเปิดเชลล์พรอมต์คำสั่งและพิมพ์: reg เพิ่ม "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v เส้นทาง / t เส้นทาง REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32 ^% SystemRoot ^% / f

สำหรับรายละเอียดเพิ่มเติม: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable


วิธีการเพิ่มวงเงินอย่างน้อย4095?
Dan M.


0

Apparently Rapid Environment Editor จะทำสิ่งนี้ให้คุณ (จาก @shatil_shah คำตอบ) แต่คุณยังสามารถตัดเส้นทางไปยังรุ่น "8dot3" ของพวกเขาได้ คุณจะได้รับไมล์สะสมจำนวนมากด้วยการเปลี่ยนทั้งสองแบบ:

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

หากคุณคัดลอกเส้นทางปัจจุบันของคุณลงใน Notepad แรกค้นหาและแทนที่แล้วC:\Program Files (x86)C:\Progam Files


0

คุณสามารถลองผ่านตัวแปรของคุณเพื่อดูว่ามีเส้นทางที่ไม่เกี่ยวข้องที่คุณสามารถลบได้หรือไม่ นี่จะเป็นการเพิ่มที่ว่างสำหรับคุณในการเพิ่มตัวแปรอื่นหรือมากกว่านั้น


-3

Workarround ใช้แก้ไขข้อความและแก้ไขเส้นทางของคุณในตัวแก้ไขข้อความ


2
ฉันพยายามทำตามคำแนะนำของคุณ ตัวแปรสภาพแวดล้อมไฟล์ใดที่เก็บอยู่ในคอมพิวเตอร์ของฉัน
กาเบรียลแฟร์

มันเป็นเพียงข้อความ เปิดโดยใช้สมุดบันทึก
Christoph Adamakis

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