Windowsでフォルダをドライブに見せる&ドライブをフォルダに見せる。

Windows 使っていて、フォルダにドライブレター割り当てたい!とかドライブをフォルダみたいにツリーに組み込みたい!って時、ありますよね?

フォルダをドライブにする

2018/7/4 追記: 以下のやり方は Windows8 まで有効。それ以降の Windows では subst コマンドが効かないので、こちらを参照してください。

D:\z を Z: でアクセスしたい!って場合は Windows に標準で入ってる subst コマンドを使います。

コマンドプロンプト

C:\>subst Z: D:\z

とすることで、Z:へのアクセス == D:\z へのアクセス になります。
一般には subst (割当ドライブレター) (割り当てるフォルダ名) とします。


解除する場合は

C:\>subst Z: /D

です。


ただ、この割当は再起動すると消えてしまうので、恒久的に割り当てたいなら適当な bat ファイルを書いてスタートアップやタスクスケジューラーに登録しておきましょう(他のプログラムが割当ドライブを使う場合、起動タイミングを考慮しないとですが)。

@echo off
rem 適当なbat
subst Z: D:\z


WindowsXP SP3, Windows 7で確認


ドライブをフォルダにする

次は逆。Z: を D:\z でアクセスしたい!という場合。Unix界隈で言うところのマウントみたいなものですね。
この場合は Windows にこちらも標準で入ってる mountvol コマンドを使います。
(たぶん Vista 以降では mountvol でマウント/アンマウントを行う場合は管理者コマンドプロンプトが必要になります)


mountvol の場合、ドライブレターではなくボリューム名というもの(パーティションの名前みたいなもの)を使うので、まずはそれを調べます。
mountvol を引数無しで実行すると、

C:\>mountvol
(ヘルプ省略)
    \\?\Volume{b5c34a46-00a3-11df-a641-0016eb1b8aba}\
        D:\

    \\?\Volume{68e2d650-00a0-11df-8f7d-806e6f6e6963}\
        C:\

    \\?\Volume{68e2d64e-00a0-11df-8f7d-806e6f6e6963}\
        *** マウント ポイントなし ***

    \\?\Volume{68e2d64f-00a0-11df-8f7d-806e6f6e6963}\
        *** マウント ポイントなし ***

    \\?\Volume{058589d4-05d3-11df-9096-001bd387a899}\
        Z:\

こんな感じで、ヘルプの後にボリューム名の一覧が出ます。(ドライブレター振ってないのは「マウント ポイントなし」になってます。リカバリ領域など。)


続いて、同コマンドプロンプト

C:\>mkdir D:\z

として、割り当てるフォルダは事前に作っておきます。これをしないと次の手順でエラーになります。


最後に

C:\>mountvol D:\z \\?\Volume{058589d4-05d3-11df-9096-001bd387a899}\

とすることで、 D:\z へのアクセス == Z: にアクセス になります。
一般には mountvol (割り当てるフォルダ名) (割当ボリューム名) とします。


解除する場合は

C:\>mountvol D:\z /d

です(こちらも管理者コマンドプロンプトでないとエラーになります)。


mountvol は subst と違い、再起動しても状態が維持されるようです。


WindowsXP SP3, Windows 7で確認。Windows 7では管理者コマンドプロンプトでないと「アクセスが拒否されました。」とエラーになりました。