PR

【bat】対話式でシンボリックリンクを作成してくれるバッチ

概要

シンボリックリンクを対話式で作りたくないですか? 私は作りたいです。

AIに作らせるときは「対話式でシンボリックリンクを作成してくれるバッチを作成してください、shift-jis前提で日本語で作ってください、最初に管理者権限チェックをしてください、シンボリックリンクのファイル名を入れられるようにしてください、ハードリンクとジャンクションは不要です」とかで多分出ると思います。
めんどくさいですね。

下記コードは動作確認済みです。

削除する場合はどちらも右クリックして削除でOKです。

2026/07/31 コードが正常にコピーできなかった問題の修正、作成済みbatファイルDLを可能にした。

コード

ここからバッチファイルのダウンロードができます。

リンク作る際にリンク名を指定するタイプのバッチです。
ファイルの文字コードはshift-jisで保存してください。(UTF8で作ると文字コード入れてもスキップされたりして動作しないため)

入力例は下記
リンク先(実体):C:\my\app
リンク名(フルパス+リンク名):C:\xampp\htdocs\シンボリックリンク名

@echo off
setlocal enabledelayedexpansion

:: 管理者権限チェック
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo ========================================
    echo   エラー: 管理者権限が必要です
    echo ========================================
    echo.
    echo このバッチファイルを右クリックして
    echo 「管理者として実行」を選択してください。
    echo.
    pause
    exit /b 1
)

echo ========================================
echo   シンボリックリンク作成ツール
echo ========================================
echo.

:: リンクの種類を選択
echo リンクの種類を選択してください:
echo   1. ファイルへのシンボリックリンク
echo   2. フォルダへのシンボリックリンク
echo.
set /p linktype="番号を入力 (1-2): "

:: 入力検証
if "%linktype%"=="" goto :invalid_type
if %linktype% lss 1 goto :invalid_type
if %linktype% gtr 2 goto :invalid_type
goto :valid_type

:invalid_type
echo.
echo エラー: 1-2の番号を入力してください。
pause
exit /b 1

:valid_type

:: リンク先(実体)のパスを入力
echo.
echo ========================================
set /p target="リンク先(実体)のパスを入力: "

if "%target%"=="" (
    echo エラー: リンク先を入力してください。
    pause
    exit /b 1
)

:: リンク先の存在確認
if %linktype%==1 (
    if not exist "%target%" (
        echo エラー: 指定されたファイルが存在しません。
        pause
        exit /b 1
    )
)
if %linktype%==2 (
    if not exist "%target%\" (
        echo エラー: 指定されたフォルダが存在しません。
        pause
        exit /b 1
    )
)

:: シンボリックリンクの名前(パス)を入力
echo.
set /p linkname="作成するリンクのフルパス(配置先フルパス+シンボリックリンクの名前)を入力: "

if "%linkname%"=="" (
    echo エラー: リンク名を入力してください。
    pause
    exit /b 1
)

:: 既存チェック
if exist "%linkname%" (
    echo.
    echo 警告: "%linkname%" は既に存在します。
    set /p overwrite="上書きしますか? (y/n): "
    if /i not "!overwrite!"=="y" (
        echo キャンセルしました。
        pause
        exit /b 0
    )
    del "%linkname%" 2>nul
    rmdir "%linkname%" 2>nul
)

:: 確認表示
echo.
echo ========================================
echo   作成内容の確認
echo ========================================
if %linktype%==1 echo リンク種類: ファイルへのシンボリックリンク
if %linktype%==2 echo リンク種類: フォルダへのシンボリックリンク
echo リンク先  : %target%
echo リンク名  : %linkname%
echo ========================================
echo.
set /p confirm="この内容で作成しますか? (y/n): "

if /i not "%confirm%"=="y" (
    echo キャンセルしました。
    pause
    exit /b 0
)

:: リンク作成
echo.
echo 作成中...

if %linktype%==1 (
    mklink "%linkname%" "%target%"
)
if %linktype%==2 (
    mklink /d "%linkname%" "%target%"
)

if %errorlevel%==0 (
    echo.
    echo ========================================
    echo   シンボリックリンクを作成しました!
    echo ========================================
) else (
    echo.
    echo エラー: リンクの作成に失敗しました。
)

echo.
pause

おわり。

タイトルとURLをコピーしました