PR
更新:2025/01/19

【windows,bat】フォルダにある特定のファイルのシンボリックリンクを作成する方法

はるか
はるか
特定の拡張子だけ対象にしたシンボリックリンクを作成したい。
ふゅか
ふゅか
シンボリックリンク!つまり、実際のファイルじゃなくてショートカットみたいなものを作る感じかな?

1. バッチファイルの作成

Windowsで特定のフォルダ内にあるすべての任意の拡張子のファイルについて、シンボリックリンクを作成するバッチファイルのサンプルコードを以下に示します。このバッチファイルは、元ファイルを参照するリンクを指定したフォルダに作成します。

1.1. バッチファイルのコード例

以下のコードを使用して、バッチファイル(例: create_symlinks.bat)を作成します。

@echo off
setlocal

:: 元のフォルダとリンク先フォルダを指定してください
set "source_dir=C:\path\to\source"      :: 元のPNGファイルがあるフォルダ
set "link_dir=C:\path\to\link"          :: シンボリックリンクを作成するフォルダ
:: 複数の拡張子を指定してください (カンマ区切りで記載)
set "extensions=png,jpg,gif"      :: 対応する拡張子を指定

:: リンク先フォルダが存在しなければ作成
if not exist "%link_dir%" (
    mkdir "%link_dir%"
)

:: 各拡張子ごとにファイルを処理
for %%e in (%extensions%) do (
    echo 処理中の拡張子: %%e
    for %%f in ("%source_dir%\*.%%e") do (
        mklink "%link_dir%\%%~nxf" "%%f"
        echo シンボリックリンクを作成: %%~nxf
    )
)

pause

1.2. コードの説明

  1. フォルダの指定
    • set "source_dir": 元ファイルが保存されているフォルダのパスを指定します。
    • set "link_dir": シンボリックリンクを作成するフォルダのパスを指定します。
  2. リンク先フォルダの作成
    • if not exist "%link_dir%" を使用して、指定したリンク先フォルダが存在しない場合に新しく作成します。
  3. ファイルのループ処理
    • for %%e in (%extensions%) で指定された拡張子ごとに処理を行います。
    • for %%f in ("%source_dir%\*.%%e") で元フォルダ内の各ファイルを取得します。
  4. シンボリックリンクの作成
    • mklink コマンドを使用し、リンク先フォルダに元ファイルのシンボリックリンクを作成します。
    • %%~nxf はファイル名(拡張子付き)を意味します。
  5. 処理終了後の一時停止
    • pause コマンドで処理完了後に画面が閉じないようにします。

1.3. 使い方

  1. メモ帳またはエディタを開き、このコードをコピーして貼り付けます。
  2. 任意の名前(例: create_symlinks.bat)でファイルを保存します。
    • 保存時に拡張子を .bat にすることを忘れないでください。
  3. バッチファイルを実行します。
PR