ใน Windows ส่วนขยายชื่อไฟล์ใดที่แสดงว่าสามารถเรียกใช้งานได้


17

ใน Windows, * .exe, * .bat, * .cmd และ * .com ล้วนแสดงถึงโปรแกรมหรือเชลล์สคริปต์ที่สามารถเรียกใช้งานได้โดยการดับเบิลคลิก มีนามสกุลไฟล์อื่น ๆ ที่ระบุว่าไฟล์สามารถเรียกใช้งานได้หรือไม่?

แก้ไข : เมื่อฉันกระโดดเข้าสู่โครงการใหม่ (หรือกลับเข้าสู่โครงการเก่า!) สิ่งหนึ่งที่ฉันต้องทำเมื่อมองไปรอบ ๆ คือการค้นหาว่ามีเครื่องมืออะไรบ้าง ใน Unix (ซึ่งฉันใช้มาหลายสิบปี) มีบิตดำเนินการดังนั้นนี่เป็นเรื่องง่ายเหมือน:

find . -executable -type f

ฉันคิดว่าใน Windows ซึ่งดูเหมือนว่าจะมีกลไกที่ซับซ้อนมากกว่าสำหรับ "คือไฟล์นี้ (และฉันจะรันมันได้อย่างไร)" จะมีนามสกุลไฟล์ค่อนข้างน้อยซึ่งจะให้บริการในจุดประสงค์เดียวกัน

สำหรับโครงการปัจจุบันของฉัน*.exe *.bat *.cmdเกือบจะเพียงพอแล้ว แต่ฉันคิดว่าฉันจะถามว่ามีรายการที่เชื่อถือได้หรือไม่

คำตอบ:


26

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

C:\>set PATHEXT

ในเครื่องของฉันฉันได้รับสิ่งนี้ (WinXP):

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1

นี่ไม่ใช่รายการพิเศษ Windows จะเรียกใช้งานไฟล์อื่น ๆ (ตัวอย่างเช่นโปรแกรมรักษาหน้าจอมีนามสกุลเป็น. scr และไฟล์ปฏิบัติการ) Windows จะอนุญาตให้เรียกใช้งานนามสกุลไฟล์อื่น ๆ ได้ แต่ไฟล์ที่อยู่ในรายการด้านบนนี้เป็นนามสกุลเริ่มต้นที่สามารถใช้งานได้


1
หาที่ยอดเยี่ยม!
barlop

1
นอกจากนี้คุณสามารถเพิ่มได้มากขึ้น - ตัวอย่างเช่นเพิ่ม. py เพื่อให้ "pyscript" ทำงาน "pyscript.py"!
Phoshi

@Phoshi แต่ด้วย. คุณจะไปเป็นบุคคลที่สามและไม่มีที่สิ้นสุด
barlop

@barlop; อันที่จริงผม แต่มันก็เป็นสิ่งที่มีประโยชน์ที่จะรู้ว่าถ้าสัมผัสกับคำถาม :)
Phoshi

5
ยังมี. SCR สำหรับสกรีนเซฟเวอร์ พวกเขาสามารถ (และทำ) มีรหัสการปฏิบัติจริงสำหรับสกรีนเซฟเวอร์ พวกเขาไม่ได้อยู่ใน PATHEXT
sinni800

2

.msiหนึ่งที่พบบ่อยสำหรับโปรแกรมที่ติดตั้งคือ


3
มันจริงๆน้อยกว่ารูปแบบปฏิบัติการและอื่น ๆ msiexec.exeรูปแบบสคริปต์เพราะมันยังคงต้องแยกวิเคราะห์โดย
Hello71

@ Hello71: คุณ 12 จริง ๆ หรือ
Paradroid

@paradroid: ไม่เขาไม่ได้จริงๆ ดูสไตล์การเขียนของเขา
studiohack

@paradroid: มันสำคัญจริงๆเหรอ?
Hello71

@studiohack: นั่นคือสิ่งที่ฉันสับสน @ Hello71: ใช่มันเป็นเพราะถ้าคุณคุณกลัวฉัน
Paradroid

2

.vbs เป็นสคริปต์ และ. js

แต่ถ้าคุณรู้ประวัติศาสตร์คุณก็สามารถทำให้สิ่งต่าง ๆ ในบริบทดีขึ้น ฉันคิดว่าถ้าฉันไม่ได้ใช้คอมพิวเตอร์เป็นเวลานานฉันก็อาจจะเน้นไปที่การรู้ว่าส่วนขยายใดที่สามารถเรียกใช้งานได้ ... เพราะพวกเขาน่าตื่นเต้นและดูพื้นฐาน .. และฉันคิดว่ามันเป็น .. เมื่อเวลาผ่านไป. COM ก็เสียชีวิตไปอย่างมากมายหลังจากที่ดอสเพิ่งรู้ว่าส่วนใหญ่ฉันคิดว่าหลังจากนั้นถ้าทุกอย่างใน windows 9x ในเชลล์ command.com บางที NTs เก่า ๆ ใช้มันเยอะ สคริป .. vbs ใช้เวลาประมาณ win9x บางที .. มีคนใหม่ปรากฏขึ้น ps1 ใหม่กว่า vbs

.COM นั้นเก่ามาก .. ฉันไม่แน่ใจว่า windows xp สำหรับตัวอย่างอาศัยไฟล์. COM หรือไม่ แต่มันก็มี command.com เพิ่มเติมสำหรับแอปรุ่นเก่าที่ฉันเดา

.BAT เป็น script..back จาก DOS days ยังใช้อยู่ในปัจจุบัน .VBS ทันสมัยกว่า แต่ .BAT ยังคงใช้งานอยู่และจะไม่ออกไปใช้งานในไม่ช้าและผู้คนจะใช้ทั้งสองอย่างสมเหตุสมผล มี. CMD ที่ฉันไม่ได้ใช้ แต่อาจไม่แตกต่างจากสิ่งใดเลย มี ps1 (powershell. นี่ทันสมัยกว่า vbscript) ถ้าเราพูดถึงสคริปต์อย่างหลวม ๆ จะมี. REGG

จริง ๆ แล้วคำว่า executable ใช้ได้กับ EXE และ. COM (.COM โดยทั่วไปจะสูญพันธุ์ .. ยิ่ง win9x เป็นสิ่ง (พรอมต์คำสั่งใน win9x เป็น command.com ไม่มี cmd.exe) และไฟล์ COM เป็นสิ่ง DOS แต่ไม่ใช่ CMD ของ NT ตัวอย่างเช่นเชลล์คำสั่งของ NT คือ cmd.exe แต่ดังที่กล่าวไว้ว่ามี command.com ใน NT ฉันเดาว่าแอพรุ่นเก่า แต่ NT ส่วนใหญ่คงไม่เชื่อใจ)

.MSC เช่น start..run ..services.msc พวกเขาไม่ใช่ executables .. ฉันคิดว่าพวกเขาเป็นสคริปต์ชนิดหนึ่ง .. services.msc ดูเหมือนว่าจะเขียนด้วย xml) แต่ถ้าไปแบบหลวม ๆ อาจจะไปอีกขั้นหนึ่ง ไม่ใช่สิ่งที่ระบบและกล่าวว่าหน้า HTML เป็นหนึ่งเพราะพวกเขาถูกตีความ .. เช่นสคริปต์ แต่ไม่ใช่โดย OS แม้ว่า. .CPL ไม่ใช่สคริปต์ .. ดูที่ notepad คนมักจะไม่คิดว่าพวกเขาเป็นไฟล์ปฏิบัติการหรือสคริปต์บางทีพวกนักพัฒนา MS เท่านั้นที่เขียนมัน (หรือถ้าคนอื่นทำแล้วมันเป็นเรื่องแปลกมาก!)


น่าเสียดายที่การเพิ่ม.MSCลงในPATHEXTนั้นไม่อนุญาตให้คุณเรียกใช้สแน็ปอิน MMC โดยไม่ต้องเพิ่มส่วนขยาย (เช่นservicesแทนservices.msc) :-(
Synetech

@Synetech services.exeเพราะมีอยู่แล้ว
kinokijuf

@kinokijuf จริง หากคุณเรียกใช้diskmgmt(ไม่มีส่วนขยาย) จากพรอมต์คำสั่งมันจะใช้งานได้ แต่การรันservicesจะไม่เกิดขึ้น แต่ไม่มีของพวกเขาจะทำงานถ้าคุณพยายามที่จะเรียกพวกเขาจากการเรียกใช้โต้ตอบโดยไม่ต้อง.mscขยายแม้ว่าทั้งระบบตัวแปรมีpathext .msc
Synetech

2

ใน Windows ส่วนขยายชื่อไฟล์ใดที่แสดงว่าสามารถเรียกใช้งานได้

แสดงถึงอะไร

ฉันรู้ว่าคำถามอาจฟังดูสับสนเล็กน้อยในขณะนี้ แต่คำถามก็สำคัญ เมื่อฉันอธิบายว่าทำไมมันถึงสำคัญคำถามจะชัดเจนขึ้น

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

ตัวอย่างเช่นคุณอาจลองทำสิ่งต่อไปนี้

  • เรียกใช้โปรแกรมจาก "พรอมต์คำสั่งดั้งเดิม" ("CMD") โดยพิมพ์ชื่อไฟล์แบบเต็ม
  • เรียกใช้โปรแกรมจาก "command command prompt" ("CMD") โดยการพิมพ์ชื่อไฟล์พื้นฐาน
  • ใช้คำสั่ง "start" ที่สร้างไว้ใน "command command prompt" ("CMD")
  • เรียกใช้โปรแกรมจาก PowerShell
  • เรียกใช้โปรแกรมจากรายการเมนู "เรียกใช้" ที่พบในเมนูเริ่ม
  • เรียกใช้โปรแกรมจาก Explorer โดยพยายามดับเบิลคลิกที่ไอคอนที่เกี่ยวข้องกับไฟล์ที่ลงท้ายด้วยนามสกุล
  • บอก Microsoft Internet Explorer ให้เปิดไฟล์ที่ดาวน์โหลด
  • เรียกใช้โปรแกรมโดยใช้ฟังก์ชั่นจาก Microsoft Windows API (นี่คือสิ่งที่ผู้ใช้ทั่วไปไม่ได้ทำ แต่โปรแกรมเมอร์คอมพิวเตอร์อาจทำสิ่งนี้และข้อมูลนั้นเกี่ยวข้องกับพวกเขา)

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

ตัวอย่างเช่นบล็อกที่ทำให้งงของ Wes: การกำหนดคำสั่ง Windows Run เอง ...บันทึกตำแหน่งต่าง ๆ ที่ตรวจสอบรวมถึงรีจิสตรีคีย์

คำตอบอาจขึ้นอยู่กับรุ่นของ Microsoft Windows ที่ใช้อยู่ ใน Windows 10 ฉันเพิ่งพิมพ์ชื่อไฟล์ zip ที่พรอมต์คำสั่งและเปิด Windows Explorer ขึ้นมา ฉันดูเหมือนจะจำได้ว่าไม่ทำงานใน Windows XP (ถึงแม้ว่าใน Windows XP ฉันสามารถพิมพ์ "start filename.zip" และใช้เอฟเฟ็กต์แบบเดียวกัน) ดังนั้นหน่วยความจำของฉันจึงผิดพลาดหรือ Microsoft พยายามปรับปรุง Windows รุ่นใหม่กว่า (หวังว่าสำหรับฉันคนหลัง)

ในพรอมต์คำสั่งดั้งเดิมของ Windows 10 (เรียกใช้ "CMD") เมื่อฉันไปที่ตำแหน่ง (โดยใช้คำสั่ง "CD") ของไฟล์ zip และพิมพ์ "filename.zip" จากนั้นไฟล์จะเปิดขึ้น เมื่อฉันไปที่ตำแหน่งนั้นและพิมพ์ "ชื่อไฟล์" (ไม่ต้องใส่นามสกุลไฟล์ ".zip") จากนั้น Windows จะไม่พบไฟล์ อย่างไรก็ตามหากฉันเรียกใช้ " ECHO %PATHEXT%" และจากนั้น " SET PATHEXT=%PATHEXT%;.ZIP" (และจากนั้น " ECHO %PATHEXT%" อีกครั้งเพื่อให้แน่ใจว่าฉันมีเอฟเฟกต์ที่ต้องการ) จากนั้นฉันสามารถพิมพ์ "ชื่อไฟล์" และพรอมต์คำสั่งจะค้นหาไฟล์. ZIP นั่นคือผลกระทบของตัวแปร% PATHEXT%

คุณอาจเห็นรายการส่วนขยายอื่นโดยเรียกใช้ASSOCคำสั่ง ตัวอย่างเช่นการรันคำสั่งนั้นแสดงเอาต์พุตหลายบรรทัดรวมถึงสิ่งต่อไปนี้ (บนระบบของฉัน) - " .zip=CompressedFolder" จากนั้นฉันจะเห็นสิ่งที่ทำงานโดยพิมพ์ " FTYPE | FIND /I "CompressedFolder"" (นั่นมีไว้สำหรับบรรทัดคำสั่งดั้งเดิม PowerShell จะไม่ชอบเครื่องหมายอัญประกาศที่ไม่ได้มีการยกเว้น) (หากคุณเพียงพิมพ์ " FTYPE" โดยไม่ต้องใช้บรรทัดคำสั่งที่เหลือคุณจะเห็นผลลัพธ์ค่อนข้างมากเกี่ยวกับส่วนขยายอื่น ๆ )

หากฉันพิมพ์ " ASSOC | FIND /C "."" บนคอมพิวเตอร์ Windows 10 ของฉันฉันจะพบว่าฉันมีเอาต์พุต 339 บรรทัดเมื่อฉันตรวจสอบการเชื่อมโยงไฟล์ในวิธีนั้น

MS KB 162059คือทั้งหมดที่เกี่ยวกับการปรับวิธีที่ Internet Explorer เปิดเอกสาร Office

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

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

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

(ฉันจะไม่แสดงรายการพวกเขาที่นี่มี 286 ในคอมพิวเตอร์ Windows 10 ของฉัน)

ที่แสดงรายการส่วนขยาย หากต้องการดูข้อมูลเพิ่มเติมรวมถึงรายละเอียดเกี่ยวกับส่วนขยาย:

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts /s

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

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