40

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

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

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

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

3 ответа3

60

Используйте 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

И вы можете скопировать эти строки, чтобы добавить другие текстовые файлы, как вы хотели бы.

2

Вот скрипт, который работал для меня на 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 ""
}
  • Необходимо запустить в окне Windows PowerShell администратора.
  • Проводник сразу обновился и показал новые значки файлов.

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

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

2

Как минимум, вам нужно создать один ключ реестра, который дает 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 и теперь вы сможете повторно связать все расширения, просто дважды щелкнув этот файл и подтвердив, что вы хотите импортировать записи в реестр.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .