@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo   快捷方式恢复工具
echo ========================================
echo.
echo 本工具会从 运行程序.txt 文件中读取程序路径
echo 并重新创建快捷方式到指定文件夹
echo.

:input_txt
set /p "txt_path=请输入 运行程序.txt 的完整路径（直接拖拽文件到此处）: "

REM 去除首尾引号
set "txt_path=%txt_path:"=%"

REM 检查文件是否存在
if not exist "%txt_path%" (
    echo.
    echo [错误] 文件不存在，请重新输入！
    echo.
    goto input_txt
)

echo.
echo [信息] 读取文件: %txt_path%
echo.

:input_folder
set /p "output_folder=请输入要创建快捷方式的文件夹路径: "

REM 去除首尾引号
set "output_folder=%output_folder:"=%"

REM 检查文件夹是否存在
if not exist "%output_folder%" (
    echo.
    echo [提示] 文件夹不存在，将自动创建
    mkdir "%output_folder%"
    echo [成功] 已创建文件夹: %output_folder%
    echo.
)

echo.
echo [信息] 开始创建快捷方式...
echo.

set shortcut_count=0
set skip_count=0

REM 逐行读取txt文件并创建快捷方式
for /f "usebackq delims=" %%L in ("%txt_path%") do (
    set "line=%%L"
    
    REM 检查是否是程序名称行（以：结尾）
    echo !line! | findstr /r ":$" >nul
    if !errorlevel! equ 0 (
        REM 提取程序名称（去掉末尾的：）
        set "program_name=!line::=!"
    ) else (
        REM 检查是否是路径行（包含引号）
        echo !line! | findstr /c:"\"" >nul
        if !errorlevel! equ 0 (
            REM 提取路径（去掉引号）
            set "program_path=!line:"=!"
            
            if defined program_name (
                if defined program_path (
                    REM 检查程序文件是否存在
                    if exist "!program_path!" (
                        echo [创建] !program_name!
                        echo   路径: !program_path!
                        
                        REM 使用PowerShell创建快捷方式
                        set "ps1_temp=%temp%\create_shortcut_%RANDOM%.ps1"
                        (
                            echo $shell = New-Object -ComObject WScript.Shell
                            echo $shortcut = $shell.CreateShortcut("%output_folder%\!program_name!.lnk"^)
                            echo $shortcut.TargetPath = "!program_path!"
                            echo $shortcut.WorkingDirectory = [System.IO.Path]::GetDirectoryName("!program_path!"^)
                            echo $shortcut.Save(
                        ) > "!ps1_temp!"
                        
                        powershell -NoProfile -ExecutionPolicy Bypass -File "!ps1_temp!" >nul 2>&1
                        del "!ps1_temp!" >nul 2>&1
                        
                        set /a shortcut_count+=1
                    ) else (
                        echo [跳过] !program_name! (文件不存在)
                        echo   路径: !program_path!
                        set /a skip_count+=1
                    )
                )
            )
            
            REM 重置变量
            set "program_name="
            set "program_path="
        )
    )
)

echo.
echo ========================================
echo   恢复完成！
echo ========================================
echo.
echo 成功创建: %shortcut_count% 个
echo 跳过: %skip_count% 个
echo 输出文件夹: %output_folder%
echo.
echo 按任意键打开文件夹...
pause >nul
explorer "%output_folder%"
