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


44

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

私は将来を考えています、ボタンをクリックするだけで選択したファイル拡張子を自動的にN ++に関連付けることができるバッチファイルを用意するのは壮大ではないでしょうか? N ++ exeなどにナビゲートするという厳密な手順を実行します。

Default ProgramsWindows 7に付属しているユーティリティでは、「遭遇」した拡張機能でのみ機能するため、これを行うことはできません。

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


ソリューションは、タグごとにPowerShellである必要がありますか?
リチャード

1
まったくそうではなく、Windowsのコマンドライン中毒者の興味を引き付けようとしているだけです。:)
deed02392

お使いのシステムの設定を転送するために使用Windows転送ツール、そのWindows 7の-Vistaに組み込まとXPのためにダウンロードすることができます... microsoft.com/download/en/details.aspx?id=7349
モアブ

元の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
存在を知らなかった2つのコマンドラインツールの+1。
イアン・ボイド

1
このソリューションは、以前に割り当てられたプログラム(notepad)ではなく、notepad ++でテキストファイルを開きます。提出者が尋ねたように、新しい未登録のファイル拡張子(pl、py、cなど)をクリックしても、notepad ++が開きません。
リチャード

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

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

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


3

少なくとも、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\""

そしてその後、次のビットは、各拡張機能のいずれかを(この例では、繰り返し続ける.plPerlのためのものです)。

[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の名前を少し意味のあるものに変更し、複数のファイル拡張子が1つのエントリを指しているだけです。
リチャード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.