assoc / ftype - ファイルの関連付け
エクスプローラーで .txt ファイルをダブルクリックするとメモ帳が開くのは、拡張子とアプリが関連付けられているためです。
assoc と ftype は、この関連付けをコマンドプロンプトから確認・変更するためのコマンドです。
assoc と ftype の役割の違い
Windows の関連付けは、次の 2 段階で成り立っています。
- 拡張子 → ファイルの種類(
assocが扱う) - ファイルの種類 → 実行するコマンド(
ftypeが扱う)
| コマンド | 扱う内容 | 例 |
|---|---|---|
assoc | 拡張子とファイルの種類の対応 | .txt → txtfile |
ftype | ファイルの種類と実行コマンドの対応 | txtfile → メモ帳で開くコマンド |
つまり .txt ファイルを開くとき、Windows は assoc の情報から「txtfile」という種類を調べ、ftype の情報から実際に起動するプログラムを決めます。
assoc と ftype は cmd.exe に組み込まれた内部コマンドです。PowerShell には同名のコマンドレットがないため、PowerShell から使うときは cmd /c assoc .txt のように cmd /c を付けて実行します。
assoc の使い方
関連付けを確認する
assoc [.拡張子[=[ファイルの種類]]]
拡張子を指定すると、その拡張子に対応するファイルの種類が表示されます。
assoc .txt
引数を付けずに実行すると、登録されているすべての関連付けが一覧表示されます。件数が多いので、findstr や more と組み合わせると便利です。
assoc | findstr /i "\.htm"

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
パイプの使い方は、
ファイルの種類の名前は、インストールされているアプリによって変わります。たとえば .html は、ブラウザーによって htmlfile、ChromeHTML、MSEdgeHTM などの名前になります。
関連付けを変更・削除する
= の右側にファイルの種類を指定すると、拡張子との対応を設定できます。
assoc .log=txtfile
= の右側を空にすると、その拡張子の関連付けを削除できます。
assoc .log=
関連付けの変更は、レジストリの HKEY_LOCAL_MACHINE\Software\Classes に書き込まれます。通常のコマンドプロンプトでは「アクセスが拒否されました」と表示されるため、
ftype の使い方
ファイルの種類に対応するコマンドを確認する
ftype [ファイルの種類[=[開くコマンド文字列]]]
ファイルの種類を指定すると、そのファイルを開くときに実行されるコマンドが表示されます。
ftype txtfile
%1 の部分には、開こうとしているファイルのパスが入ります。環境によっては %L(ファイルのパス)や %*(残りの引数)が使われていることもあります。引数なしで ftype を実行すると、すべてのファイルの種類とコマンドが一覧表示されます。
開くコマンドを変更する
ftype txtfile="C:\Program Files\MyEditor\editor.exe" "%1"
パスにスペースが含まれる場合は、実行ファイルのパスを " で囲みます。ファイルのパスを表す %1 も、スペースを含むファイル名に対応できるよう "%1" と囲むのが基本です。
バッチファイルの中で %1 を書く場合は、%%1 のように % を 2 つ重ねてください。そうしないと、バッチファイル自身の第 1 引数に置き換わってしまいます。詳しくは
ftype も assoc と同様に、変更には管理者権限が必要です。
実践例
拡張子を新しく登録して、指定のアプリで開く
.myd という拡張子を新たに用意し、独自のアプリで開く例です。管理者として実行してください。
@echo off
rem .myd を MyDataFile という種類として登録
assoc .myd=MyDataFile
rem MyDataFile の開き方を設定
ftype MyDataFile="C:\Tools\mydata.exe" "%%1"
拡張子に対応するアプリを調べる
assoc で種類を調べ、ftype でコマンドを調べるという流れで、拡張子ごとの動作を確認できます。
assoc .py
ftype Python.File
2 行目の Python.File は、1 行目で表示されたファイルの種類を指定します。
ftype の一覧から特定のアプリを探す
ftype | findstr /i "notepad"
設定が反映されないときは
assoc や ftype を変更しても、ダブルクリックで開くアプリが変わらないことがあります。
Windows Vista 以降では、ユーザーが「このアプリで常に開く」を選んだ内容が、ユーザーごとのレジストリ(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.拡張子\UserChoice)に保存されます。この設定は assoc や ftype の内容より優先されます。
assoc/ftypeは、**マシン全体の既定の関連付け(ProgID)**を書き換えるコマンドです。ユーザーが選んだ既定のアプリ(UserChoice)が別の ProgID を指している場合は、そちらが優先され、変更が反映されません。- 既定のアプリを変えたい場合は、Windows の「設定」の「アプリ」にある「既定のアプリ」で変更してください。
assoc/ftypeが表示するのはHKEY_CLASSES_ROOTの内容であり、ユーザーが「設定」で選んだ既定のアプリ(UserChoice)は反映されません。
実際にどのアプリで開かれるかは、start "" ファイル名 で確認できます。start は関連付けに従ってファイルを開きます。詳しくは
まとめ
assocは「拡張子 → ファイルの種類」、ftypeは「ファイルの種類 → 開くコマンド」を扱う- 引数なしで一覧、
assoc .拡張子やftype 種類で個別の確認ができる =で設定、=の右を空にすると関連付けを削除できる(assoc .log=/ftype 種類=)- 変更には管理者権限が必要で、バッチファイル内の
%1は%%1と書く - ユーザーが選んだ既定のアプリが優先されるため、反映されないときは「既定のアプリ」の設定を確認する