Windowsのリンク機能の活用

2023年 1月 5日 Posted 野々瀨(フロントエンドエンジニア)

Windowsにはファイルやフォルダへのアクセスを楽に行えるリンクという機能があります。
ご存じのショートカットもリンク機能の一つです。
ここではリンクの種類とその使い方や活用方法をご紹介します。

リンクの種類

Windowsのリンクには幾つかの種類があります。

リンクを活用すれば、ファイルやフォルダを素早く利用することができます。
ファイルのリンクを実行しますと、そのファイルを開くあるいは起動し、フォルダのリンクを実行しますと、そのフォルダを開くことができます。

主な違いは次の通りです。

内容ショートカットシンボリックリンクハードリンクジャンクションリンク
作成可能対象 ファイル/フォルダ ファイル/フォルダ ファイル フォルダ
作成権限 一般ユーザー/管理者 管理者 一般ユーザー/管理者 一般ユーザー/管理者
ネットワーク共有へのリンク 可能 可能 不可能 不可能
パスの見え方 参照元のパス リンクのパス リンクのパス リンクのパス
参照元と作成先が同ボリュームの作成 可能 可能 不可能 可能

リンク実行時のパス

リンクを実行した際、そのリンク元であるファイルやフォルダは、リンクの種類によって実行元のパスが変わります。

ショートカットシンボリックリンクハードリンクジャンクションリンク
元のパス リンクのパス リンクのパス リンクのパス

ショートカットの場合、例えば「C:¥foo¥bar¥baz」というフォルダのショートカットをデスクトップ(C:¥Users¥Test User¥Desktop)に作成した場合、このショートカットを実行しますと、参照もパスも「C:¥foo¥bar¥baz」になります。

シンボリックリンクやハードリンク、ジャンクションリンクの場合、同じように「C:¥foo¥bar¥baz」というフォルダのシンボリックリンクをデスクトップ(C:¥Users¥Test User¥Desktop)に作成した場合、このシンボリックリンクを実行しますと、参照は「C:¥foo¥bar¥baz」ですが、パスは「C:¥Users¥Test User¥Desktop¥baz」となります。

ダイアログでのパスの違い

例えば、あるアプリケーションでファイルを開くときにリンクの種類によって、開かれ方が異なります。

ハードリンクやジャンクションリンクはダイアログで開かれますと、パスはそのリンクのパスのままですが、ショートカットやシンボリックリンクは参照元のパスになります。

作成方法

各リンクの作成する方法をご紹介します。

ショートカット

ショートカットは設置する箇所によって作成方法が若干異なります。

※ ショートカットはファイル名またはフォルダ名は末尾に「 - ショートカット」が付きます。

デスクトップに作成

作成したいファイルやフォルダを右クリックしてコンテキストメニューを開きます。
コンテキストメニューから「送る」にある「デスクトップ(ショートカットを作成)」を押します。

そうするとデスクトップにショートカットが作成されます。

現在のフォルダに作成

作成したいファイルやフォルダを右クリックしてコンテキストメニューを開きます。
コンテキストメニューから「ショートカットの作成」を押します。

そうするとデスクトップにショートカットが作成されます。

任意のフォルダに作成

作成したいファイルやフォルダを右クリックでドラッグしながら、作成先のフォルダにドロップしますと、コンテキストメニューが表示されます。
コンテキストメニューから「ショートカットをここに作成」を押します。

そうするとドロップしたフォルダにショートカットが作成されます。

なお、キーボードでAltキーあるいはCtrl + Shiftキーを押しながらドロップすることでも、ショートカットを作成することができます。

シンボリックリンク/ハードリンク/ジャンクションリンク

コマンドプロンプトを起動し、cdコマンドなどを使用してリンクを設置したい場所まで移動します。

cd C:¥Users¥Test User¥Desktop

mklinkコマンドを使用してリンクを作成します。
mklink オプション リンク名 参照元パスのように書きます。
オプションによって作成できる種類を指定します。

オプション作成するリンク
なし シンボリックリンク(ファイル)
/d シンボリックリンク(フォルダ)
/h ハードリンク
/j ジャンクションリンク

例えばファイルのシンボリックリンクの場合は次のようなコマンドを実行します。

mklink bar C:¥test¥foo¥bar.txt

ジャンクションリンクの場合は次のようなコマンドを実行します。

mklink /j foo C:¥test¥foo

これでリンクが作成されます。
mklinkコマンドについてはMicrosoftの公式ドキュメントに使用方法が書かれていますので、詳しくはそちらをご覧ください。

mklink | Microsoft Docs

活用例

ジャンクションリンクの活用例をご紹介します。

例えば、Webサイト制作やWebアプリケーションの作成などで、プロジェクトごとにまったく同じnpmのパッケージをローカルインストールしていますと、同じものが別の場所に複数存在していることになり、無駄が発生してしまいます。

そこで共通するnode_modulesフォルダを管理用の別のフォルダに設置し、ジャンクションリンクを各プロジェクトに作成することで、無駄がなくなります。

ただし1点注意が必要で、node_modulesフォルダをジャンクションリンクとしているプロジェクトで、npmコマンドを使用してインストールなどの操作を行ってしまうと、ジャンクションリンクではなく、そのまま存在するファイルやフォルダが作られてしまいます。
この現象を回避するには、参照元からしっかりと操作を行うと問題は起こらなくなります。

最後に

リンクを活用すると効率化や無駄をなくすことができますので、ぜひ試してみてください。