@echo off
setlocal
chcp 936 >nul
cd /d "%~dp0"

rem -------------------------
rem 提权保护：避免无限循环并兼容多种环境
rem 如果脚本被带上参数 ELEVATED 则认为已经提权
if /i "%~1"=="ELEVATED" goto :after_elevate

rem 首选检查管理员身份（多个检测方法兜底）
>nul 2>&1 fltmc && goto :after_elevate
whoami /groups | find "S-1-5-32-544" >nul 2>&1 && goto :after_elevate

rem 需要提权：优先尝试 PowerShell 提权，失败则继续尝试 mshta
rem -------------------------
rem 先尝试用 PowerShell 提权，如果成功则退出当前窗口
where powershell >nul 2>&1
if not errorlevel 1 (
  powershell -NoProfile -ExecutionPolicy Bypass -Command ^
    "try { Start-Process -FilePath '%~f0' -WorkingDirectory '%~dp0' -Verb RunAs -ArgumentList 'ELEVATED'; exit 0 } catch { exit 1 }"
  rem 如果 PowerShell 返回 0，说明已成功启动管理员窗口，本窗口可以安全退出
  if not errorlevel 1 (
    exit /b
  )
)

rem 如果执行到这里，说明：
rem 1）系统没有 PowerShell，或者
rem 2）PowerShell 被策略禁用，或者
rem 3）用户在 UAC 提示中点了“否”
rem 为了兼容更多环境，可以尝试用 mshta 兜底，但提权失败也不退出脚本

where mshta.exe >nul 2>&1
if not errorlevel 1 (
  mshta "vbscript:CreateObject(""Shell.Application"").ShellExecute(""%~f0"",""ELEVATED"","""",""runas"",1)(close)"
  rem 这里不做 exit /b：
  rem - 如果提权成功，会有一个新的管理员窗口运行脚本
  rem - 当前窗口则继续以普通权限往下执行，保证“即使提权失败也能继续运行”
)

rem 无论上面的提权成功或失败，当前脚本都继续执行
rem -------------------------
:after_elevate
rem 关键路径自检，防止压缩包内运行或被防护软件隔离
if not exist "%~dp0clash.meta" (
  echo [错误] 未找到目录：%~dp0clash.meta
  echo 请先完整解压到本地磁盘，不要在压缩包内直接运行。
  pause
  exit /b
)
if not exist "%~dp0clash.meta\clash.meta-windows-386.exe" (
  echo [错误] 未找到：%~dp0clash.meta\clash.meta-windows-386.exe
  echo 可能被安全软件隔离/删除，请检查防毒软件的隔离/历史并加入排除项。
  pause
  exit /b
)

rem -------------------------

title Clash.Meta 一键启动

echo 是否执行IP更新？IP更新从云端更新IP配置以解决封锁问题！
echo 按3跳过，按1选择ip1更新，若ip1不好用再按2选ip2更新，如果更新后都用不了，请发邮件到rebeccalane27@gmail.com进行反馈！
choice /C 1234567 /T 17 /D 7 /M "1、ip1更新  2、ip2更新  3、ip3更新  4、ip4更新 5、ip5更新 6、ip6更新 7、跳过"
if errorlevel 7 goto startfq
if errorlevel 6 goto ip6
if errorlevel 5 goto ip5
if errorlevel 4 goto ip4
if errorlevel 3 goto ip3
if errorlevel 2 goto ip2
if errorlevel 1 goto ip1

:ip6
start /wait "" "%~dp0clash.meta\ip_Update\ip_6.bat"
goto startfq

:ip5
start /wait "" "%~dp0clash.meta\ip_Update\ip_5.bat"
goto startfq

:ip4
start /wait "" "%~dp0clash.meta\ip_Update\ip_4.bat"
goto startfq

:ip3
start /wait "" "%~dp0clash.meta\ip_Update\ip_3.bat"
goto startfq

:ip2
start /wait "" "%~dp0clash.meta\ip_Update\ip_2.bat"
goto startfq

:ip1
start /wait "" "%~dp0clash.meta\ip_Update\ip_1.bat"
goto startfq

:startfq

echo 等待 Clash.Meta 启动，请稍候...
start "" /D "%~dp0clash.meta" "%~dp0clash.meta\clash.meta-windows-386.exe" -d "%~dp0clash.meta"
if exist "%~dp0App\chrome.exe" (
  start "" /D "%~dp0App" "%~dp0App\chrome.exe" --proxy-server=127.0.0.1:7890
)
echo 完成。按空格或回车键退出。
pause
