การเพิ่มไดเรกทอรีไปยัง PATH Environment Variable ใน Windows


524

ฉันกำลังพยายามเพิ่มลงในตัวแปรสภาพแวดล้อมC:\xampp\phpระบบPATHใน Windows

ฉันได้เพิ่มไปแล้วโดยใช้กล่องโต้ตอบตัวแปรสภาพแวดล้อม

แต่เมื่อฉันพิมพ์ลงในคอนโซลของฉัน:

C:\>path

ไม่แสดงC:\xampp\phpไดเรกทอรีใหม่:

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

ฉันมีสองคำถาม:

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

43
นี่เป็นหัวข้อเนื่องจากเป็นคำถามเกี่ยวกับ 'เครื่องมือโปรแกรมเมอร์ที่นิยมใช้งาน' หากคุณพัฒนาบน Windows และคุณไม่จำเป็นต้องปรับเปลี่ยน PATH ฉันประหลาดใจ เพื่อลดความต้องการที่เกี่ยวข้องกับการเขียนโปรแกรมฉันได้เน้นสิ่งที่คำตอบที่ได้รับคะแนนสูงสุดชี้ให้เห็น: คุณสามารถทำสิ่งนี้โดยใช้โปรแกรมผ่านคอนโซล (หรือผ่านทางไฟล์แบตช์)
George Stocker

1
ขอบคุณสำหรับการตรวจสอบ @GeorgeStocker ดีใช่ฉันทำมันเป็นโปรแกรมและ แต่ฉันก็ไม่ได้มีความคิดที่ฉันต้อง relogin หลังจากใช้การเปลี่ยนแปลงในเซสชันคอนโซล (และฉันคิดว่ามันเป็นเพียงในกรณีของฉัน) แต่คำตอบที่ได้รับการโหวตสูงสุดโดยทั่วไปตอบคำถาม
Netorica

1
@George - เห็นด้วย แต่เป็นเช่นนั้นคำถามนี้เขียนขึ้นสำหรับผู้ใช้ขั้นสูงและไม่ใช่ Stack Overflow ผู้ใช้ขั้นสูงจะให้ความช่วยเหลือเกี่ยวกับการกำหนดค่าเว็บเซิร์ฟเวอร์สำหรับการใช้งานส่วนตัว Stack Overflow ใช้สำหรับคำถามการเขียนโปรแกรม
jww

1
ออกและเปิดคอนโซลใหม่ ... หากคุณกำลังใช้ bash อาจต้องรีบูตระบบก่อนที่การเปลี่ยนแปลงจะยังคงมีอยู่ทั้งนี้ขึ้นอยู่กับวิธี / สิ่งที่คุณใช้
Tracker1

คำตอบ:


148

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

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


9
อืมมันไม่ได้แก้ไขรีจิสตรีจริงๆ ควรจะชัดเจนจากการทำเช่นนี้ในกล่องโต้ตอบ 'แผงควบคุม' แทนพร้อมท์รับคำสั่งด้วยคำสั่ง PATH คุณสามารถสังเกตสิ่งที่ทำได้อย่างง่ายดายด้วยการตรวจสอบกระบวนการของ SysInternals หากคุณสนใจ การใช้ PATH ไม่เหมือนกันการเปลี่ยนแปลงใด ๆ ที่คุณทำจะหายไปเมื่อปิดคอนโซล SETX เป็นวิธีหนึ่งในการเปลี่ยนแปลงอย่างต่อเนื่องเช่นในกล่องโต้ตอบ
Hans Passant

3
สิ่งนี้ถูกต้อง คุณต้องรีสตาร์ทเซสชันคอนโซลของคุณเสมอก่อนที่จะรับตัวแปรสภาพแวดล้อมใหม่
BrainSlugs83

1
เซสชันของคอนโซลจะอัปเดตตัวแปรหรือไม่หากWM_SETTINGCHANGEข้อความถูกส่งจากแอปพลิเคชัน stackoverflow.com/a/8358361
John_West

เป็นไปได้ในทางทฤษฎีไม่มีการนำ CRT ไปใช้ในทางปฏิบัติที่ฉันรู้ Explorer ทำ
Hans Passant

1
ข้อมูลความเป็นมาที่ยืนยันสิ่งนี้: blogs.msdn.microsoft.com/oldnewthing/20150915-00/?p=91591
Euro Micelli

959

ตัวเลือกที่ 1

หลังจากที่คุณเปลี่ยนPATHด้วย GUI ให้ปิดและเปิดหน้าต่างคอนโซลอีกครั้ง

PATHงานนี้เพราะโปรแกรมจะเริ่มหลังจากการเปลี่ยนแปลงที่จะเห็นใหม่

ตัวเลือก 2

ดำเนินการคำสั่งนี้ในหน้าต่างคำสั่งที่คุณเปิด:

set PATH=%PATH%;C:\your\path\here\

คำสั่งนี้จะผนวกการปัจจุบันC:\your\path\here\PATH

ทำลายมันลง:

  • set- คำสั่งที่มีการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมของ cmd เฉพาะสำหรับเซสชัน cmd ปัจจุบัน ; โปรแกรมอื่น ๆ และระบบจะไม่ได้รับผลกระทบ
  • PATH=- ระบุว่าPATHเป็นตัวแปรสภาพแวดล้อมที่จะเปลี่ยนแปลงชั่วคราว
  • %PATH%;C:\your\path\here\- %PATH%ส่วนจะขยายไปเป็นค่าปัจจุบันของPATHและ;C:\your\path\here\จากนั้นจะต่อเข้ากับส่วนนั้น PATHนี้จะกลายเป็นใหม่

16
@Ilya: ฉันต้องการให้คุณเปิดหน้าต่างคอนโซลหลังจากเปลี่ยนเส้นทางใน MyComputer-> Properties-> Advanced-> Env Variables-> Path แอพ windows บางตัวจะเผยแพร่การเปลี่ยนแปลงของตัวแปรสภาพแวดล้อมหลังจากที่พวกเขาเริ่มแล้วบางตัวจะไม่ WinXP cmd.exe ไม่ได้
JimR

7
ถ้าฉันออกจากคอนโซลและรันใหม่ฉันต้องรีเซ็ตพา ธ ความคิดใดที่จะทำให้การเปลี่ยนแปลงนี้ถาวร
เดวิด天宇วงศ์

2
@David 天宇 Wong หากคุณทำตาม "My Computer"> "Properties"> "Advanced"> "ตัวแปรสภาพแวดล้อม"> "Path" และเพิ่มไดเรกทอรีไปยังจุดสิ้นสุดของสตริงนั้นมันจะยังคงอยู่ เพียงให้แน่ใจว่าได้เปิดคอนโซลหลังจากทำการเปลี่ยนแปลง
theB3RV

yup @ theB3RV มันเป็นวิธีการทำสิ่งที่ง่าย มันแปลกที่ไม่มีคำสั่งแบบถาวรที่สามารถพิมพ์ลงในคอนโซลได้
David 天宇 Wong

12
@David 天宇 Wong เพิ่งค้นพบ "SETX เป็นวิธีในการเปลี่ยนแปลงอย่างต่อเนื่องเช่นในกล่องโต้ตอบ" ดังนั้นคำสั่ง setX ควรทำมัน
theB3RV

202

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

อย่าคัดลอกและวางสิ่งนี้โดยเด็ดขาด ใช้ด้วยความระมัดระวัง

คุณสามารถเพิ่มเส้นทางอย่างถาวรPATHด้วยsetxคำสั่ง:

setx /M path "%path%;C:\your\path\here\"

เอา/Mธงถ้าคุณต้องการตั้งค่าผู้ใช้แทนระบบPATHPATH

หมายเหตุ:

  • setxคำสั่งจะใช้ได้เฉพาะใน Windows 7 และในภายหลัง
  • คุณควรรันคำสั่งนี้จากพรอมต์คำสั่งที่ยกระดับ

  • ถ้าคุณต้องการที่จะเปลี่ยนมันสำหรับเซสชันปัจจุบันใช้ชุด


7
SETX /M path "%path%;C:\Program Files (x86)\Git\bin\"เพื่อตั้งค่า PATH ในระดับเครื่อง
Lu55

7
ทำไมนี่ไม่ใช่คำตอบที่ยอมรับ? ฉันคิดว่าคนส่วนใหญ่ต้องการที่จะกำหนดเส้นทางของพวกเขาอย่างถาวร ...
ปีเตอร์กอร์ดอน


9
คำเตือน : เนื่องจากการใช้%PATH%ตัวแปรคำสั่งนี้จะรวมตัวแปร env แบบโกลบอลกับผู้ใช้ ไม่มัน สิ่งนี้อาจสร้างผลข้างเคียงที่ไม่พึงประสงค์โดยเฉพาะอย่างยิ่งกับสวิตช์ / M
FF_Dev

4
คำเตือน 2:%PATH%ตัวแปรอาจไม่อยู่ในซิงค์กับตัวแปรสภาพแวดล้อมตามที่เต็มไปที่การเปิดตัวของคำสั่งพรอมต์และไม่เคยโหลดใหม่หลังจากนั้น (แม้ในขณะที่รันคำสั่ง setX) นอกจากนี้ยังสามารถเปลี่ยนแปลงได้ในเครื่องโดยสคริปต์ที่เรียกใช้ก่อนหน้า
FF_Dev

66

คุณไม่จำเป็นต้องใด ๆsetหรือsetxคำสั่งเพียงแค่เปิดสถานีและประเภท:

PATH

นี่แสดงค่าปัจจุบันของตัวแปร PATH ตอนนี้คุณต้องการเพิ่มไดเรกทอรีเข้าไปหรือไม่ เพียงพิมพ์:

PATH %PATH%;C:\xampp\php

หากด้วยเหตุผลใดก็ตามที่คุณต้องการล้างตัวแปร PATH (ไม่มีพา ธ เลยหรือลบพา ธ ทั้งหมดในนั้น) ให้พิมพ์:

PATH ;

ปรับปรุง

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

ในการตรวจสอบว่ามีตัวแปรสภาพแวดล้อมอยู่หรือดูค่าให้ใช้คำสั่ง ECHO:

echo %YOUR_ENV_VARIABLE%

1
มันได้ผล :) แล้วมันจะเป็นยังไง! 'PATH% PATH%;' ฉันจำได้ว่า
Dustin Woodard

12
ฉันคิดว่านี่ใช้งานได้กับอินสแตนซ์ของเซสชัน cmd เท่านั้นให้ใช้ setx เพื่อเปลี่ยนมันอย่างถาวร
Daniel Wilson

2
อย่าใส่เครื่องหมายคำพูดกับสิ่งนี้ ตัวอย่างเช่นการโทรPATH %PATH%;C:\Program Files\...แทนPATH "%PATH%;C:\Program Files\..."
icc97

4
อย่าใช้ setx! คุณมีความเสี่ยงในการตัดตัวแปรพา ธ ของคุณสูญเสียพา ธ อื่น ๆ ที่คุณใช้ไปในการตั้งค่าเวลา ฟังคำเตือนข้างต้น
STWilson

1
@STWilson สายเกินไปที่จะเห็นความคิดเห็นของคุณ!
เวสต์หยาง

48

ฉันจะใช้ PowerShell แทน!

ในการเพิ่มไดเรกทอรีไปยัง PATH โดยใช้ PowerShell ให้ทำดังนี้

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

หากต้องการตั้งค่าตัวแปรสำหรับผู้ใช้ทั้งหมดทั้งเครื่องบรรทัดสุดท้ายควรเป็นดังนี้:

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

ในสคริปต์ PowerShell คุณอาจต้องการตรวจสอบสถานะของคุณC:\xampp\phpก่อนที่จะเพิ่มใน PATH (ในกรณีที่มีการเพิ่มไว้ก่อนหน้านี้) คุณสามารถพันมันได้ในifเงื่อนไข

ดังนั้นรวบรวมทั้งหมดเข้าด้วยกัน:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}

ยังดีกว่าหนึ่งสามารถสร้างฟังก์ชั่นทั่วไป เพียงระบุไดเรกทอรีที่คุณต้องการเพิ่ม:

function AddTo-Path{
param(
    [string]$Dir
)

    if( !(Test-Path $Dir) ){
        Write-warning "Supplied directory was not found!"
        return
    }
    $PATH = [Environment]::GetEnvironmentVariable("PATH")
    if( $PATH -notlike "*"+$Dir+"*" ){
        [Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
    }
}

คุณสามารถทำให้สิ่งต่าง ๆ ดีขึ้นด้วยการขัดเกลา ตัวอย่างเช่นใช้Test-Pathเพื่อยืนยันว่าไดเรกทอรีของคุณมีอยู่จริง


3
สำหรับการโทรSetEnvironmentVariableด้วยMachineพารามิเตอร์คุณต้องเปิด PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบ
InsOp

มันเป็นเรื่องที่น่าผิดหวังอย่างมากที่เชลล์ "power" นี้ไม่รู้จัก% userprofile% หรือ $ userprofile .. แต่จากนั้นอีกครั้งนี่คือหน้าต่างที่เรากำลังพูดถึง
abbood

3
@abbood $env:userprofileสิ่งที่คุณกำลังมองหาอยู่
nyuszika7h

3
นอกจากนี้คุณควรระบุuserหรือในการเรียกร้องของmachine GetEnvironmentVariableมิฉะนั้น$PATHจะมีค่าของทั้งผู้ใช้และชิ้นส่วนเครื่องจักรของรีจิสตรีซึ่งจะทำให้ตัวแปรพา ธ ไม่ถูกต้องเมื่อทำการจัดเก็บอีกครั้ง
René Nyffenegger

35

ปลอดภัยกว่า SETX

พยักหน้าให้ทุกคนแสดงความคิดเห็นในที่@ เริ่มต้น Nafscript ของSETXคำตอบ

  • SETXโดยค่าเริ่มต้นจะอัปเดตเส้นทางผู้ใช้ของคุณ
  • SETX ... /Mจะอัปเดตพา ธระบบของคุณ
  • %PATH% มีเส้นทางของระบบพร้อมกับเส้นทางของผู้ใช้ต่อท้าย

คำเตือน

  1. สำรองข้อมูลของคุณPATH - SETXจะตัดทอนขยะของคุณยาวเกิน 1024 อักขระ
  2. อย่าโทรSETX %PATH%;xxx - เพิ่มเส้นทางของระบบลงในเส้นทางของผู้ใช้
  3. อย่าโทรSETX %PATH%;xxx /M - เพิ่มเส้นทางผู้ใช้ในเส้นทางของระบบ
  4. การใช้ไฟล์แบตช์ที่มากเกินไปอาจทำให้ตาบอดได้1

หน้า ss64 setXมีตัวอย่างที่ดีบางอย่าง ที่สำคัญจะชี้ไปที่คีย์รีจิสทรีมีการSETXเทียบSETX /M

ตัวแปรผู้ใช้:

HKCU\Environment

ตัวแปรระบบ:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

คำแนะนำการใช้งาน

ผนวกเข้ากับผู้ใช้ PATH

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

ผนวกเข้ากับระบบ PATH

append_system_path.cmd. จะต้องเรียกใช้ในฐานะผู้ดูแล

(โดยทั่วไปแล้วจะเป็นแบบเดียวกันยกเว้นที่แตกต่างKeyและSETX /Mตัวดัดแปลง)

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

ทางเลือก

ในที่สุดอาจมีการปรับปรุงรุ่นที่เรียกว่าSETENV ซึ่งแนะนำโดยหน้า ss64 SETX ซึ่งแยกการตั้งค่าผู้ใช้หรือตัวแปรสภาพแวดล้อมของระบบ


1. ไม่จริงอย่างเคร่งครัด


24

ไปงานปาร์ตี้สาย - แต่มีประโยชน์ถ้าคุณอยู่ในไดเรกทอรีที่คุณต้องการเพิ่มใน PATH แล้ว

set PATH=%PATH%;%CD%

แก้ไข: ตามความคิดเห็น - ทำงานร่วมกับ windows มาตรฐาน cmd แต่ไม่ได้อยู่ใน powershell

สำหรับ powershell ที่%CD%เทียบเท่าคือ[System.Environment]::CurrentDirectory


1
My PowerShell บอกว่าไม่รู้จัก% CD%
เปาโล Matos

@ PauloMatos สามารถลองใช้[System.Environment]::CurrentDirectory
nclord

4

นอกเหนือจากคำตอบทั้งหมดถ้าคุณต้องการเครื่องมือ GUI ที่ดีในการแก้ไขตัวแปรสภาพแวดล้อมของ windows คุณสามารถใช้Rapid Environment Editor

ลองมัน! มันปลอดภัยที่จะใช้และน่ากลัว!

http://www.rapidee.com/en/


2
Windows 10 ได้ปรับปรุงตัวแก้ไขตัวแปร Path Environment อย่างมีนัยสำคัญในขณะนี้ ใช้เวลาเพียง 20 ปีในการปัดเศษ
icc97

4
  • การเปลี่ยนแปลงบรรทัดคำสั่งจะไม่เป็นการถาวรจะหายไปเมื่อปิดคอนโซล
  • เส้นทางทำงานเหมือนมาก่อนได้ก่อน
  • คุณอาจต้องการแทนที่ไฟล์เอ็กซีคิวต์อื่น ๆ ที่มีอยู่แล้ว ตัวอย่างเช่นหากคุณมีเวอร์ชันอื่นในพา ธ ของคุณและคุณต้องการเพิ่มเวอร์ชันอื่นโดยไม่ทำการเปลี่ยนแปลงอย่างถาวรบนพา ธ คุณควรวางไดเรกทอรีไว้ที่จุดเริ่มต้นของคำสั่ง

หากต้องการแทนที่ไฟล์ที่รันได้แล้ว

ตั้งค่า PATH = C: \ xampp \ php;% PATH%;


2

ตรวจสอบคำแนะนำข้างต้นใน Windows 10 LTSB และมองไปที่ "ช่วย" สรุปโครงร่าง (ที่สามารถดูได้เมื่อพิมพ์ 'command /?' บน cmd) ทำให้ฉันสรุปว่าคำสั่ง PATH เปลี่ยนตัวแปรสภาพแวดล้อมของระบบ ค่าพา ธ สำหรับเซสชันปัจจุบันเท่านั้น แต่หลังจากรีบูตค่าทั้งหมดจะรีเซ็ตเป็นค่าเริ่มต้นเช่นเดียวกับที่เคยใช้คำสั่ง PATH

ในทางกลับกันการใช้คำสั่ง SETX ด้วยสิทธิ์ของผู้ดูแลระบบมีประสิทธิภาพมากกว่าวิธีนี้จะเปลี่ยนค่าเหล่านั้นให้ดี (หรืออย่างน้อยก็จนกว่าจะใช้คำสั่งนี้ในครั้งต่อไปหรือจนกว่าครั้งต่อไปที่ค่าเหล่านั้นถูกจัดการ GUI ด้วยตนเอง ... )

แต่เพื่อความชัดเจนฉันคิดว่าการแชร์ที่นี่การใช้ไวยากรณ์ของ SETX ที่ดีที่สุดที่ทำงานให้ฉันอาจช่วยใครซักคนหนึ่งวัน:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

ควรหลีกเลี่ยงเครื่องหมายเท่ากับ '=' และคุณไม่ต้องกังวลเรื่องช่องว่าง! ไม่จำเป็นต้องแทรกเครื่องหมายคำพูดใด ๆ เพิ่มเติมสำหรับพา ธ ที่มีช่องว่างอยู่ข้างใน - เครื่องหมายแยก ';' ทำงาน

คำสำคัญ PATH ที่ตามหลัง SETX กำหนดชุดของค่าที่ควรเปลี่ยนระหว่างตัวแปรสภาพแวดล้อมของระบบค่าที่เป็นไปได้และ% PATH% (คำว่า PATH ล้อมรอบด้วยเครื่องหมายเปอร์เซ็นต์) ภายในเครื่องหมายคำพูดบอก OS ให้คงอยู่เดิม ค่า PATH ตามที่เป็นอยู่และเพิ่มพา ธ ต่อไปนี้ (อันที่ตามหลังเครื่องหมายแยก ';') ไปยังค่าที่มีอยู่

HTH


2

เกี่ยวกับประเด็น 2ฉันกำลังใช้แบตช์ไฟล์แบบง่ายที่กำลังเติมข้อมูลPATHหรือตัวแปรสภาพแวดล้อมอื่น ๆ สำหรับฉัน ดังนั้นจึงไม่มีมลพิษของตัวแปรสภาพแวดล้อมโดยค่าเริ่มต้น ไฟล์ชุดนี้สามารถเข้าถึงได้จากทุกที่เพื่อให้ฉันสามารถพิมพ์:

c:\>mybatchfile
-- here all env. are available
c:\>php file.php

นี่เป็นข้อแตกต่างที่สำคัญระหว่าง * nix-es และ Windows แบตช์รันในเชลล์เดียวกันและเปลี่ยนเป็นสภาพแวดล้อมหลังจากออกจาก (ที่ขอบเขตเซสชัน) อย่างไรก็ตามวิธีนี้จะตัดทั้งสองวิธี: ไฟล์แบตช์สามารถลบสภาวะแวดล้อมของคุณ (BTW บน * nix-es คุณแค่ต้องsourceใช้ไฟล์เช่นนี้. mybatchfile)
Tomasz Gandor

สวัสดี @ grzegorz-gajos ฉันกำลังมองหาที่แน่นอนว่าการเชื่อมโยงของคุณสำหรับรายละเอียดเพิ่มเติมให้ 404 มีทางเลือกใด?
devkabiir

ขออภัยเนื้อหาจากลิงค์ไม่สามารถใช้ได้อีก ฉันลบออกแล้ว.
Grzegorz Gajos

1

ในพรอมต์คำสั่งคุณจะบอก Cmd ให้ใช้บรรทัดคำสั่งของ Explorer โดยใส่คำสั่งstartล่วงหน้าด้วย

start Yourbatchnameดังนั้น

batchfile.exeหมายเหตุคุณต้องลงทะเบียนเป็นถ้าชื่อของมันคือ

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

นี่เป็นไฟล์ reg ทั่วไป คัดลอกบรรทัดด้านล่างไปยังเอกสารข้อความใหม่และบันทึกเป็น anyname.reg แก้ไขด้วยโปรแกรมหรือเอกสารของคุณ

ในพา ธ ใช้ \ เพื่อแยกชื่อโฟลเดอร์ในพา ธ คีย์เนื่องจาก regedit ใช้ \ เพื่อแยกเป็นชื่อคีย์ ไฟล์ reg ทั้งหมดเริ่มต้นด้วย REGEDIT4 อัฒภาคเปลี่ยนบรรทัดเป็นความคิดเห็น สัญลักษณ์ @ หมายถึงการกำหนดค่าให้กับคีย์แทนที่จะเป็นค่าที่มีชื่อ

ไฟล์ไม่จำเป็นต้องมีอยู่ สิ่งนี้สามารถใช้เพื่อตั้งค่า Word.exe ให้เปิด Winword.exe

การพิมพ์start batchfileจะเริ่มต้น iexplore.exe

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

คุณได้รับแจ้งเกี่ยวกับเส้นทางในคำตอบอื่นแล้ว ดูdoskey /?cmd macros ด้วย (ใช้ได้เฉพาะเมื่อพิมพ์)

คุณสามารถเรียกใช้คำสั่งเริ่มต้นสำหรับ CMD จากการอ้างอิงทางเทคนิคของ Windows Recource Kit

การทำงานอัตโนมัติ

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

ลักษณะ

มีคำสั่งที่ดำเนินการทุกครั้งที่คุณเริ่ม Cmd.exe


1

ทางเลือกที่ดีกว่าในแผงควบคุมคือการใช้โปรแกรมฟรีแวร์นี้จากแหล่งข้อมูลที่เรียกว่า Pathenator:

https://sourceforge.net/projects/pathenator/

อย่างไรก็ตามมันใช้ได้กับระบบที่มี Dot.Net 4.0 หรือสูงกว่าเช่น windows 7,8 หรือ 10 เท่านั้น


1

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


ในความรู้สึก. สิ่งที่เกิดขึ้นคือคุณเริ่มเซสชันใหม่ภายในเซสชันปัจจุบัน การออกจะต้องให้คุณโทรหาexitสองครั้งก่อนเพื่อปิดใหม่แล้วจึงปิดเซสชันแรก (ด้วยสภาพแวดล้อมแบบเดิม)
Farway

1

ใช้เส้นทางจาก gtools

มันทำสิ่งต่าง ๆ ในวิธีที่ง่ายเช่น:

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

มันและแสดงผลลัพธ์โดยไม่จำเป็นต้องวางไข่ cmd ใหม่ !


0
  1. ฉันติดตั้ง PHP ในครั้งนั้น แยกphp-7 ***. zipเป็นC: \ php \
  2. สำรองข้อมูลตัวแปรสภาพแวดล้อม PATH ปัจจุบันของฉัน: รันcmdและรันคำสั่ง:path >C:\path-backup.txt

  3. รับค่าเส้นทางปัจจุบันของฉันเป็นไฟล์ C: \ path.txt (แบบเดียวกัน)

  4. แก้ไข path.txt (แน่นอนความยาวเส้นทางของฉันมีมากกว่า 1024 ตัวอักษรหน้าต่างทำงานไม่กี่ปี)
    • ฉันได้ลบเส้นทางที่ซ้ำซ้อนในนั้นเช่น'C: \ Windows; หรือC: \ Windows \ System32; หรือC: \ Windows \ System32 \ Wbem;- ฉันมีสองครั้ง
    • ลบเส้นทางโปรแกรมที่ถอนการติดตั้งออกเช่นกัน ตัวอย่าง: C: \ Program Files \ NonExistSoftware;
    • ด้วยวิธีนี้ความยาวสตริงเส้นทางของฉัน <1024 :)))
    • ที่ส่วนท้ายของเส้นทางสตริงเพิ่ม C: \ php \
    • คัดลอกค่าพา ธลงในบัฟเฟอร์ด้วยเครื่องหมายคำพูดคู่กรอบ! ตัวอย่าง: "C: \ Windows; ****; C: \ php \" ไม่มีPATH =ควรอยู่ที่นั่น !!!
  5. เปิด Windows PowerShell ในฐานะผู้ดูแลระบบ
  6. เรียกใช้คำสั่ง:

setx path "Here you should insert string from buffer (new path value)"

  1. เรียกใช้เทอร์มินัลของคุณอีกครั้ง (ฉันใช้ "Far manager") และตรวจสอบ: php -v

0

ไม่สำคัญอย่างที่คิดฉันต้องรีสตาร์ท Windowsเมื่อต้องเผชิญกับปัญหานี้

ฉันใช้ Windows 7 x64 ฉันได้ทำการอัพเดทคู่มือตัวแปรระบบ PATH สิ่งนี้ใช้ได้ดีถ้าฉันเรียกใช้ cmd.exe จากเมนูสถิติ แต่ถ้าฉันพิมพ์ "cmd" ในแถบที่อยู่ของ Windows Explorer ดูเหมือนว่าจะโหลด PATH จากที่อื่นซึ่งไม่มีการเปลี่ยนแปลงด้วยตนเอง

(เพื่อหลีกเลี่ยงข้อสงสัย - ใช่ฉันทำการปิดและเรียกใช้งานอีกครั้งสองสามครั้งก่อนที่ฉันจะเริ่มใหม่และไม่ได้ช่วยอะไร)

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