@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo   程序快捷方式转TXT工具
echo ========================================
echo.
echo 本工具会读取指定文件夹中的快捷方式和程序文件信息
echo 并合并到一个 运行程序.txt 文件中。
echo.
echo 【安全说明】本工具只读取文件路径，不会修改任何原始文件！
echo.

set /p "folder_path=请输入要扫描的文件夹路径（直接拖拽文件夹到此处）: "
set "folder_path=%folder_path:"=%"

if not exist "%folder_path%" (
    echo.
    echo [错误] 文件夹不存在！
    echo.
    pause
    exit /b 1
)

echo.
echo [信息] 开始扫描文件夹: %folder_path%
echo.

set "output_file=%folder_path%\运行程序.txt"
if exist "%output_file%" (
    echo [提示] 发现已存在的 运行程序.txt，将被覆盖
    del "%output_file%"
)

echo 正在处理文件...
echo.

set file_count=0

REM 处理 .lnk 快捷方式文件
for %%F in ("%folder_path%\*.lnk") do (
    echo [读取] %%~nxF
    
    REM 调用PowerShell读取快捷方式目标路径
    set "temp_result=%temp%\lnk_%RANDOM%.txt"
    powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $c=$s.CreateShortcut('%%F'); Write-Output $c.TargetPath" > "!temp_result!" 2>nul
    
    REM 读取结果
    set "target="
    for /f "usebackq delims=" %%T in ("!temp_result!") do set "target=%%T"
    del "!temp_result!" >nul 2>&1
    
    if defined target (
        if not "!target!"=="" (
            echo   目标路径: !target!
            echo %%~nF：>>"%output_file%"
            echo "!target!">>"%output_file%"
            echo.>>"%output_file%"
            set /a file_count+=1
        )
    )
)

REM 处理 .exe 文件
for %%F in ("%folder_path%\*.exe") do (
    echo [读取] %%~nxF
    echo %%~nF：>>"%output_file%"
    echo "%%~fF">>"%output_file%"
    echo.>>"%output_file%"
    set /a file_count+=1
)

REM 处理 .bat 文件
for %%F in ("%folder_path%\*.bat") do (
    if /i not "%%~nxF"=="%~nx0" (
        if /i not "%%~nxF"=="程序快捷方式转TXT-v3.bat" (
            echo [读取] %%~nxF
            echo %%~nF：>>"%output_file%"
            echo "%%~fF">>"%output_file%"
            echo.>>"%output_file%"
            set /a file_count+=1
        )
    )
)

REM 处理 .cmd 文件
for %%F in ("%folder_path%\*.cmd") do (
    echo [读取] %%~nxF
    echo %%~nF：>>"%output_file%"
    echo "%%~fF">>"%output_file%"
    echo.>>"%output_file%"
    set /a file_count+=1
)

REM 处理 .reg 文件
for %%F in ("%folder_path%\*.reg") do (
    echo [读取] %%~nxF
    echo %%~nF：>>"%output_file%"
    echo "%%~fF">>"%output_file%"
    echo.>>"%output_file%"
    set /a file_count+=1
)

echo.
echo ========================================
echo   处理完成！
echo ========================================
echo.
echo 共处理了 %file_count% 个文件
echo 输出文件: %output_file%
echo.
echo 按任意键查看生成的文件...
pause >nul
notepad "%output_file%"
