web-dev-qa-db-ja.com

Windowsでアプリケーションにファイル拡張子をプログラムで関連付ける

最近Windowsを再インストールしたばかりですが、環境をセットアップするときに、Notepad ++で編集するさまざまなプログラミング言語に対するすべての関連付けが(自然に)なくなっていることに気付きました。

私は将来を考えています。ボタンをクリックするだけで、選択したファイル拡張子をN ++に自動的に関連付けることができるようなバッチファイルがあり、これらのすべての拡張子に出会うまで待つ必要はないのではないでしょうか。 N ++ exeなどにナビゲートすることの厳格さを経て.

これは、Windows 7に付属するDefault Programsユーティリティでは実行できません。これは、「遭遇」した拡張機能でしか機能しないためです。

それで、プログラムでファイル拡張子をWindows上のアプリケーションに関連付けることは可能ですか?

47
deed02392

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

また、これらの行をコピーして、必要に応じて他のテキストベースのファイルを追加できます。

67
uSlackr

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ウィンドウで実行する必要があります。
  • Explorerはすぐに更新され、新しいファイルアイコンが表示されました。

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

この作業を行うために必要な情報について、他の回答に感謝します。

5
Tim Abell

少なくとも、notepad ++にIDとパスを提供するレジストリキーを1つ作成し、それを使用するために登録する拡張機能ごとに1つ作成する必要があります。

IDとパスを作成するには(パスが正しい場所を指していることを確認します):

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\""

次に、拡張ごとに1つずつ、次のビットを繰り返します(この例では、.plはPerl用です)。

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

このファイルを拡張子.regで保存すると、このファイルをダブルクリックして、レジストリにエントリをインポートすることを確認するだけで、すべての拡張子を再度関連付けることができるようになります。

4
Richard