Программно связать расширения файлов с приложением в Windows


44

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

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

Я не могу сделать это с помощью Default Programsутилиты, которая поставляется с Windows 7, потому что она работает только с расширениями, которые были «встречены».

Так возможно ли программно ассоциировать расширения файлов с приложениями в Windows?


Должно ли решение быть PowerShell в соответствии с вашим тегом?
— Ричард

1
Совсем нет, просто пытаюсь заинтересовать наркоманов командной строки Windows. :)
— deed02392

Используйте Windows Easy Transfer для переноса настроек вашей системы, она встроена в Windows 7-Vista и может быть загружена для XP ... microsoft.com/download/en/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
Это решение позволяет открывать текстовые файлы в notepad ++, а не в ранее назначенной программе (notepad). Это не сделает Notepad ++ открытым, когда вы нажмете на новое незарегистрированное расширение файла (например, pl, py или c), как просил отправитель.
— Ричард

1
@ deed02392 Вы можете добавить новую ассоциацию с ассоциацией «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 ""
}
  • Необходимо запустить в окне PowerShell администратора (с повышенными правами).
  • Проводник сразу обновился и показал новые значки файлов.

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

Спасибо другим ответам за информацию, необходимую мне для этой работы.


3

Как минимум, вам нужно создать один ключ реестра, который дает notepad ++ идентификатор и путь, а затем по одному для каждого расширения, которое вы хотите зарегистрировать для его использования.

Чтобы создать идентификатор и путь (отметьте путь, указывающий на правильное местоположение):

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 \ command со значением "C: \ Program Files \ Notepad ++ \ notepad ++". .exe ""% 1 ". Откуда ты базировал свой?
— deed02392

Это в основном то же самое, только с ext_auto_file, переименованным во что-то более значимое, и несколькими расширениями файлов, указывающими на одну запись.
— Ричард
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.