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

概要

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

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

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

コード

リンク作る際にリンク名を指定するタイプのバッチです。
ファイルの文字コードは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?4の番号を入力してください。
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をコピーしました