บังคับให้ Windows ใช้. EXE บน PATH แทนที่จะเป็นคำสั่งภายใน CMD.EXE


9

เมื่อฉันรันคำสั่งที่มีชื่อเดียวกันกับคำสั่งภายในแทนที่จะค้นหาในพา ธ Windows เพียงแค่ใช้คำสั่งที่พบใน CMD.EXE

ยกตัวอย่างเช่นMKDIRCMD.EXEเป็นคำสั่งภายในที่สร้างขึ้นใน ไม่รองรับตัวเลือกเดียวกันกับรุ่น Unix (เช่น-pและ--help) หากฉันใช้ตัวเลือกเหล่านี้ Windows จะสร้างไฟล์ชื่อ-pหรือ--helpแม้ว่าฉันจะมีmkdirรุ่น GNU ติดตั้งอยู่ในไดเรกทอรีในพา ธ ของฉัน

สิ่งนี้จะกลายเป็นปัญหาเมื่อทำงานกับบางโปรแกรมที่ใช้mkdirผ่านทางเทอร์มินัล ตัวอย่างเช่นgulpfile สำหรับร้อยแก้วมีสามmkdir -pคำสั่งที่สร้างโฟลเดอร์-pในไดเรกทอรีการทำงานแล้วโยนข้อผิดพลาด ฉันต้องแก้ไขไฟล์ gulpfile ด้วยตนเองเพื่อที่จะใช้mkdir.exe ที่ติดตั้งไว้ซึ่งทำให้ฉันแบ่งปันส้อมข้ามแพลตฟอร์มได้ยากขึ้น

ฉันจะบังคับให้เชลล์ Windows ใช้ที่mkdir.exeพบใน PATH มากกว่า CMD.EXE ได้อย่างไร

คำตอบ:


14

ฉันจะบังคับให้เชลล์ Windows ใช้ mkdir.exe ที่พบใน PATH มากกว่า CMD.EXE ได้อย่างไร

ล้อมรอบชื่อปฏิบัติการในเครื่องหมายคำพูดคู่ ตัวอย่างเช่น:

"MKDIR"

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

"MKDIR" -firstParam "C:\foobar\long file name.ext"

1
หรือคุณควรระบุเส้นทางแบบเต็มไปยังโปรแกรม mkdir ที่คุณต้องการโทร
davidgo

น่าเสียดายที่นี่ใช้งานไม่ได้ มันทำอะไรได้บ้างคือสร้างไฟล์ใหม่ชื่อ ".exe" ในไดเรกทอรีปัจจุบัน @davidgo ฉันสามารถระบุเส้นทางทั้งหมด แต่นั่นกลายเป็นปัญหากับการแชร์รหัสของฉันกับผู้อื่น: ไม่ใช่ทุกคนที่มี mkdir อยู่C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn

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