@echo off
setlocal enabledelayedexpansion

:: set DRIVER_NAME=HDProDrv.inf

:: 檢查是否具有管理員權限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 需要以管理員身份運行此腳本！請右鍵點擊並選擇 "以管理員身份運行"。
    exit /b
)

:: ===============================
:: 檢查參數
:: ===============================
if "%~1"=="" (
    echo 用法:
    echo uninstall_driver.bat input_name
    echo.
    echo 示例:
    echo uninstall_driver.bat us2000.inf
    echo.
    pause
    exit /b
)

set DRIVER_NAME=%1

:: 設定列表索引
set INDEX=0
set COUNT=0

:: 使用 pnputil 列出所有已安裝的驅動
for /f "tokens=1,* delims=:" %%a in ('pnputil /enum-drivers') do (
    set LINE_LABEL=%%a
    set LINE_VALUE=%%b
    set LINE_LABEL=!LINE_LABEL: =!
    set LINE_VALUE=!LINE_VALUE: =!

    if /i "!LINE_LABEL!"=="发布名称" (
        set PUBLISHED_NAME=!LINE_VALUE!
    )
    :: 當遇到 "原始名称" 行時
    if /i "!LINE_LABEL!"=="原始名称" (
        set ORIGINAL_NAME=!LINE_VALUE!

        :: 當遇到 "发布名称" 行時
        :: 將原始名稱和發佈名稱存入內存列表（模擬）
        set /a INDEX+=1
        set /a COUNT+=1
        set PUBLISHED_DRIVER[!INDEX!]=!PUBLISHED_NAME!
        set ORIG_DRIVER[!INDEX!]=!ORIGINAL_NAME!
    )

)

set driver_found=false
:: 查找所有與 input_name 匹配的驅動並卸載
for /L %%i in (1,1,!COUNT!) do (
    if /i "!ORIG_DRIVER[%%i]!"=="%DRIVER_NAME%" (
        set driver_found=true
        set PUBLISHED_NAME=!PUBLISHED_DRIVER[%%i]!
        pnputil /delete-driver !PUBLISHED_NAME! /uninstall /force
        echo 驅動 !PUBLISHED_NAME! 已經被卸載。
    )
)

:: 如果沒有找到匹配的驅動
if not !driver_found! == true (
    echo 沒有找到與 %DRIVER_NAME% 匹配的驅動。
)

endlocal