У яких Windows розширення назви файлів позначають виконуваний файл?


18

У Windows * * .exe, * .bat, * .cmd і * .com всі представляють програми або сценарії оболонки, які можна запустити, просто двічі клацнувши по них. Чи є інші розширення імені файлів, які вказують на виконання файлу?

EDIT : Коли я переходжу до нового проекту (або назад у старий проект!), Одна з найпоширеніших речей, яку я хочу зробити, коли озираюся, - це дізнатися, які інструменти існують. У Unix (яким я користувався десятиліттями) є біт виконання, тому це так просто, як:

find . -executable -type f

Я подумав, що в Windows, який, здається, має набагато складніший механізм для "є цей виконуваний файл (і як я його виконую)", було б відносно невелика кількість розширень імен файлів, які б слугували приблизно однаковою метою.

Для мого поточного проекту *.exe *.bat *.cmdмайже напевно достатньо, але я подумав, що запитаю, чи є авторитетний список.

Відповіді:


27

Основні "виконувані" файли (ті, які Windows виглядає виконати через PATH) зберігаються в змінній навколишнього середовища під назвою PATHEXT. Це можна побачити з командного рядка:

C:\>set PATHEXT

На моїй машині я отримую це (WinXP):

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

Це не ексклюзивний список. Windows також виконуватиме інші файли (наприклад, заставки мають розширення .scr та виконують файли); Windows також дозволить виконувати інші розширення файлів, але перелічені вище є розширеннями, що виконуються за замовчуванням .


1
Блискуча знахідка!
барлоп

1
крім того, ви можете додати більше - наприклад, додати .py, щоб "pyscript" запустив "pyscript.py"!
Фоши

@Phoshi, але разом із .py, ви збираєтесь третьої сторони, і немає кінця
барлоп

@barlop; Насправді я є, але корисно знати, якщо дотичне до питання :)
Phoshi

5
Є також .SCR для заставки. Вони можуть містити (і робити) фактичний код виконання заставки. Вони просто не в PATHEXT.
sinni800

2

Поширеним для інсталяторських програм є .msi.


3
Це насправді менш виконавський формат і більше формат сценарію, оскільки його ще потрібно розібрати msiexec.exe.
Привіт71

@ Hello71: Ти справді 12?
парадороїд

@paradroid: ні, він насправді ні. подивіться на його стиль письма.
studiohack

@paradroid: Це дійсно важливо?
Привіт71

@studiohack: Це те, в чому я плутаюсь. @ Hello71: Так, це так, бо якщо ти є, ти мене налякаєш.
парадороїд

2

.vbs - це сценарій. і .js

Але якщо ви знаєте деяку історію, то зможете краще поставити речі в контекст. Я думаю, якби я не користувався комп’ютерами так довго, як у мене, я також міг би зосередитись на тому, щоб знати, які розширення є виконуваними файлами. '' Тому що вони досить захоплюючі і здаються принциповими .. з часом .COM дуже вимерло після DOS, просто відоме, головним чином, я вважаю, що після цього, якщо взагалі, у Windows 9x в оболонці command.com. Можливо, старі НТ їх багато використовували. Сценарії .. vbs прийшов час win9x, можливо .. так з'являються нові. ps1 навіть новіший, ніж vbs.

.COM дуже старий .. я не впевнений, чи Windows xp для прикладів покладається на будь-які файли .COM. Але, мабуть, він має command.com більше для застарілих додатків.

.BAT - це сценарій..завершення від DOS днів. як і раніше використовується. .VBS є більш сучасним, але. Є .CMD, який я не використовував, але, ймовірно, нічим не відрізняється. Там є ps1 (powershell. Це сучасніше, ніж vbscript) Якщо ми говоримо про сценарії у вільному сенсі, є .REG

Дійсно, виконуваний термін стосується лише EXE та .COM (.COM в основному вимер. .. Більше речі win9x (командний рядок у win9x був command.com, не було cmd.exe), а COM-файли - справа DOS. Але не CMD NT, наприклад, командна оболонка NT є ​​cmd.exe, хоча, як згадується, існує команда.com в NT, я думаю, що для застарілих програм, але NT, швидше за все, не покладається на неї)

.MSC, наприклад, start..run..services.msc Вони не виконуються. Я вважаю, що це свого роду скрипт .. services.msc, здається, написаний у xml) Але якщо перейти до цього вільного, то можна піти на крок далі до несистемних речей, і скажіть, що HTML-сторінки - це те, що їх інтерпретують .. як сценарій. Але не ОС, хоча .. .CPL не є скриптами .. подивіться на них у блокноті. Люди схильні не вважати їх виконуваними файлами чи сценаріями, можливо, тому що їх пишуть лише розробники MS. (або якщо це роблять інші, це дуже рідко!)


На жаль, додавання .MSCдо значень PATHEXTне дозволяє запускати оснащення MMC без додавання розширення (наприклад, servicesзамість services.msc). :-(
Synetech

@Synetech, тому що вже є services.exe.
kinokijuf

@kinokijuf, правда; якщо запустити diskmgmt(без розширення) з командного рядка, він буде працювати, але запуск servicesне буде. Однак жоден з них не буде працювати, якщо ви спробуєте запустити їх із діалогового вікна « Запуск» без .mscрозширення, навіть якщо pathextзмінна система містить .msc.
Synetech

2

У яких Windows розширення назви файлів позначають виконуваний файл?

Позначимо до чого?

Я знаю, що питання, мабуть, звучить трохи заплутано на даний момент, але питання має значення. Як я поясню, чому це важливо, питання стане більш зрозумілим.

Хоча відповідь Кен Вайт про змінну PATHEXT (у середовищі командного рядка) є приємною та короткою відповіддю, і ця відповідь може спрацювати для вас, відповідь є неповною. Причина, яка є неповною, полягає в тому, що правильна відповідь відрізняється від того, що ви намагаєтесь зробити.

Наприклад, ви можете спробувати:

  • Запустіть програму з "традиційного командного рядка" ("CMD"), ввівши повне ім'я файлу
  • Запустіть програму з "традиційного командного рядка" ("CMD"), ввівши ім'я базового файлу, але не залишаючи його розширення
  • Використовуйте команду "start", яка вбудована в "традиційний командний рядок" ("CMD")
  • Запустіть програму від PowerShell
  • Запустіть програму з пункту меню "Запустити", знайденого в меню "Пуск"
  • Запустіть програму з Провідника, намагаючись двічі клацнути піктограму, пов’язану з файлом, що закінчується розширенням
  • Скажіть Microsoft Internet Explorer відкрити завантажений файл
  • Запустіть програму, використовуючи функцію API Microsoft Windows. (Це зазвичай не роблять кінцеві користувачі, але комп'ютерні програмісти можуть це робити, і тому інформація стосується їх.)

Деякі з цих методів запуску програм можуть використовувати різні методи визначення того, які розширення імені файлів можуть підтримуватися. Зокрема, використання CMD може відрізнятись від меню Run.

Наприклад, дивовижний блог Уеса: Настроювання команди Windows Run Command ... відзначає перевірку різних місць, включаючи ключ реєстру.

Відповідь також може залежати від того, яка версія Microsoft Windows використовується. У Windows 10 я просто набрав ім'я zip-файлу у командному рядку, і він відкрив Провідник Windows. Я, мабуть, пам’ятаю, що не працює в 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

(Я не збираюсь їх перераховувати тут. На моєму комп'ютері з Windows 10 їх є 286.)

У цьому списку розширення. Щоб дізнатися більше інформації, включаючи детальну інформацію про розширення:

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

Отже, як ви бачите, це, здавалося б, невинне питання може насправді бути досить складною темою. Я вважаю, що я зробив свою справу з приводу того, чому питання має бути досить конкретним, щоб отримати повну відповідь, яка повністю стосується того, як один компонент Windows може визначати розширення імені файлів. У горіховій оболонці не існує лише однієї відповіді для Windows, оскільки у Windows є кілька компонентів, які поводяться по-різному. Сподіваюся, я почав це демонструвати і вказав на деякі додаткові ресурси, які містять відповідну інформацію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.