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

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

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

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

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

38 голосов | спросил deed02392 31 MarpmSat, 31 Mar 2012 17:29:07 +04002012-03-31T17:29:07+04:0005 2012, 17:29:07

3 ответа


57

Использовать 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

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

ответил uSlackr 31 MarpmSat, 31 Mar 2012 22:30:33 +04002012-03-31T22:30:33+04:0010 2012, 22:30:33
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, и теперь вы сможете повторно связать все расширения, просто дважды щелкнув на этот файл и подтверждение, что вы хотите импортировать записи в реестр.

ответил Richard 31 MarpmSat, 31 Mar 2012 21:37:10 +04002012-03-31T21:37:10+04:0009 2012, 21:37:10
2

Вот сценарий, который работал для меня в Windows 10

[email protected]("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 ""
}
  • Нужно запускать в окнах admin powershell.
  • Проводник немедленно обновил и отобразил новые значки файлов.

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

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

ответил Tim Abell 5 PMpThu, 05 Apr 2018 22:06:10 +030006Thursday 2018, 22:06:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132