Програматично пов'язуйте розширення файлів із додатком у Windows


44

Я нещодавно перевстановив Windows, і в налаштуванні свого оточення я помітив, що всі мої асоціації з різними мовами програмування, які я редагую в Notepad ++, пішли (природно).

Я думаю про майбутнє, чи не було б великим мати якийсь пакетний файл, який автоматично міг би асоціювати вибір розширень файлів з N ++ одним натисканням кнопки, а не чекати, поки я зіткнуся з усіма цими розширеннями тоді пройти через ригмарол навігації до N ++ exe тощо.

Я не можу цього зробити з Default Programsутилітою, що постачається з Windows 7, тому що вона працює лише з розширеннями, з якими "стикалися".

То чи можливо програмно пов'язувати розширення файлів із додатком у Windows?


Чи має рішення вирішуватись як на ваш тег?
Річард

1
Зовсім не просто намагаюся зацікавити наркоманів командного рядка Windows. :)
deed02392

Використовуйте функцію Windows Easy Transfer для передачі системних налаштувань, вбудованих у Windows 7-Vista, і їх можна завантажити для XP ... microsoft.com/download/uk/details.aspx?id=7349
Moab

Це не варіант, оскільки оригінальна установка Windows більше не доступна.
deed02392

Відповіді:


64

Використовуйте Ftype & Assoc, щоб виправити це (і це сценарій).

Використовуйте Assoc, щоб отримати тип файлу

>Assoc .txt

дає вам:

.txt = txtfile

Потім

>Ftype txtfile=C:\Program Files (x86)\Notepad++\notepad++.exe %1

Коли ви знаєте тип файлу, ви можете використовувати Ftype, щоб пов’язати його з дією.

Це буде працювати для .php файлів (просто вставте їх у пакетний файл)

Assoc .php=phpfile
Ftype phpfile="C:\Program Files (x86)\Notepad++\notepad++.exe" %1

І ви можете скопіювати ці рядки, щоб додати інші текстові файли, як хочете.


1
Цікаво, що коли я >assoc .phpце вказую, він не має асоціацій з файлами? Здається, що налаштовано, коли ви вказуєте програму за замовчуванням для відкриття типу файлу, таким чином не "зареєстровано". Чому це могло бути?
deed02392

18
+1 для двох інструментів командного рядка, про які я не знав, що існують.
Ян Бойд

1
Це рішення дозволяє текстові файли відкриватися в блокноті ++, а не раніше призначеній програмі (блокноті). Він не зробить блокнот ++ відкритим при натисканні на нове незареєстроване розширення файлу (наприклад, pl, py чи c), як запитав подавець.
Річард

1
@ deed02392 ви можете додати нову асоціацію з assoc 'Assoc .php = phpfile' має працювати
uSlackr

2
Наміром моєї відповіді було показати вам, як використовувати assoc & ftype, а не писати пакетний файл для вас. Але я буду грати разом
uSlackr

5

Ось сценарій, який працював на мене в Windows 10

$exts=@("txt","log","csproj","sql","xml","flobble")
echo "## setting up file associations"
foreach ($ext in $exts){
    $extfile=$ext+"file"
    $dotext="." + $ext
    cmd /c assoc $dotext=$extfile
    cmd /c "ftype $extfile=""C:\Program Files (x86)\Notepad++\notepad++.exe"" %1"
    echo ""
}
  • Потрібно запуститись у вікні адміністративної (підвищеної) версії.
  • Провідник одразу оновився та показав нові піктограми файлів.

https://gist.github.com/timabell/bc90e0808ec1cda173ca09225a16e194

Завдяки іншим відповідям за інформацію, яка мені потрібна, щоб зробити цю роботу.


3

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

Щоб створити ідентифікатор та шлях (перевірте точки шляху до правильного розташування):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\notepad_pp]
@=""

[HKEY_CLASSES_ROOT\notepad_pp\shell]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open\command]
@="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\""

а потім продовжуйте повторювати наступний біт, по одному для кожного розширення (у цьому прикладі .pl- для Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

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


1
Цікаво, що я шукав, і здається, що Windows 7 робить, коли ви встановлюєте програму для завантаження, - це створити запис в команді HKCR \ ext_auto_file \ shell \ open \ команда зі значенням "C: \ Program Files \ Notepad ++ \ notepad ++ .exe ""% 1 ". Звідки ти базував свою?
deed02392

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