@echo off
cd /d %~dp0

:: 获取管理员权限，不需要可删除或注释掉。
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit

title -- FileBrowser便捷启动脚本 --
MODE con: COLS=60 lines=18
color 0a


:begin  
cls
MODE con: COLS=60 lines=18
echo.
echo    ===FileBrowser便捷启动脚本===
echo.
echo --[1]--启动并隐藏窗口
echo --[2]--安装开机自启动服务（管理员权限）
echo --[3]--卸载开机自启动服务（管理员权限）
echo --[4]--关闭filebrowser进程
echo --[5]--临时启动并显示进程信息
echo --[6]--退出脚本并清理临时文件 
echo.
echo.
echo --注意--使用前应先修改filebrowser.json中对应的配置信息
echo --注意--临时启动中测试正常后再安装为自启动服务
echo --注意--如需升级版本仅需要替换filebrowser\filebrowser.exe文件
echo.
choice /c 123456 /n /m "请选择【1-6】："
 
echo %errorlevel%
if %errorlevel% == 1 goto set_ip1_ip  
if %errorlevel% == 2 goto set_ip2_ip  
if %errorlevel% == 3 goto set_ip3_ip  
if %errorlevel% == 4 goto set_ip4_ip  
if %errorlevel% == 5 goto set_ip5_ip  
if %errorlevel% == 6 goto end  
 

:: ====== 新增：统一共享目录 C:\shared 并挂载所有磁盘 ======
:mklink
cls
MODE con: COLS=60 lines=18
if not exist C:\shared (
    mkdir C:\shared
    echo [INFO] 创建共享目录 C:\shared
) else (
    echo [INFO] 共享目录 C:\shared 已存在
)

:: 清理旧链接（避免重复）
for /d %%i in (C:\shared\*) do (
    rmdir "%%i" >nul 2>nul
    if errorlevel 0 echo [INFO] 已删除旧链接 C:\shared\%%i
)

:: 自动挂载所有存在的盘符
for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist "%%d:\" (
        mklink /D "C:\shared\%%d_drive" "%%d:\" >nul 2>&1
        if errorlevel 0 (
            echo [INFO] 已挂载 %%d:\ 到 C:\shared\%%d_drive
        ) else (
            echo [WARN] 挂载 %%d:\ 到 C:\shared\%%d_drive 失败
        )
    )
)
ping localhost -n 2 > nul
goto :EOF
 :: goto begin  :: 添加这行以返回主菜单


:set_ip1_ip  
call :mklink
MODE con: COLS=80 lines=18
taskkill /im filebrowser.exe /f 1>nul 2>nul
ping localhost -n 3 > nul
cls 
echo.
echo.
echo 程序正在启动中....
echo.
echo --[正在更新启动脚本]--
echo.set ws=WScript.CreateObject("WScript.Shell")>%~dp0filebrowser\start2hide.vbs
echo.ws.Run """%~dp0filebrowser\filebrowser.exe"" -c ""%~dp0filebrowser.json""",^0>>%~dp0filebrowser\start2hide.vbs
echo.
ping localhost -n 3 > nul
echo --[正在启动后台进程]--
echo.
cd /d %~dp0filebrowser 
start2hide.vbs 
ping localhost -n 2 > nul
tasklist /fi "imagename eq filebrowser.exe"
echo.
echo 启动成功，按任意键隐藏窗口。
pause >nul
goto begin

:set_ip2_ip  
call :mklink
taskkill /im filebrowser.exe /f 1>nul 2>nul
ping localhost -n 3 > nul
cls 
echo.
echo.
echo 正在获取【管理员权限】，请在弹出菜单中点【是】。
ping localhost -n 5 > nul
echo.
echo --[正在生成配置文件]--
echo.^<service^>>%~dp0filebrowser\filebrowser-service.xml
echo.^<id^>filebrowser^</id^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<name^>FileBrowser Service^</name^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<description^>FileBrowser API Service^</description^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<executable^>%~dp0filebrowser\filebrowser.exe^</executable^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<arguments^>-c "%~dp0filebrowser\filebrowser.json" -d "%~dp0filebrowser\filebrowser.db"^</arguments^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<logmode^>reset^</logmode^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^<workingdirectory^>%~dp0filebrowser^</workingdirectory^>>>%~dp0filebrowser\filebrowser-service.xml
echo.^</service^>>>%~dp0filebrowser\filebrowser-service.xml
echo.
ping localhost -n 3 > nul
echo --[正在安装服务]--
echo.
%~dp0filebrowser\filebrowser-service.exe install 1>nul 2>nul
echo.
echo 服务安装成功。按【任意键】启动服务，请在弹出菜单中点【是】。 

MODE con: COLS=80 lines=18
%~dp0filebrowser\filebrowser-service.exe start 1>nul 2>nul
echo.
ping localhost -n 2 > nul
tasklist /fi "imagename eq filebrowser.exe"
echo.
echo 服务启动成功。按任意键返回开始菜单。
pause >nul
goto begin 

:set_ip3_ip 
taskkill /im filebrowser.exe /f 1>nul 2>nul
ping localhost -n 3 > nul
cls
echo.
echo. 
echo 正在获取【管理员权限】，请在弹出菜单中点【是】。
ping localhost -n 5 > nul
echo.
echo --[正在卸载自启动服务]--
%~dp0filebrowser\filebrowser-service.exe uninstall 1>nul 2>nul
echo.
echo 卸载成功。按任意键返回开始菜单。
pause >nul
goto begin 

:set_ip4_ip  
cls
echo.
echo.
echo 关闭filebrowser后台（服务）进程....
echo.
echo --[正在关闭filebrowser进程]--
taskkill /im filebrowser.exe /f 1>nul 2>nul
echo.
echo 关闭成功。按任意键返回开始菜单。
pause >nul
goto begin 

:set_ip5_ip  
MODE con: COLS=140 lines=12
call :mklink
taskkill /im filebrowser.exe /f 1>nul 2>nul
ping localhost -n 3 > nul
cls 
echo.
echo. 
echo - 请确保本地相关服务（如网站）已开启，否则访问域名时会端口报错。
echo.
cd /d %~dp0filebrowser
filebrowser.exe -c filebrowser.json 
pause >nul
goto begin 

:end 
cls
echo.
echo.
echo.
echo    ===正在清理临时文件===
del %~dp0filebrowser\filebrowser-service.err.log 2>nul
del %~dp0filebrowser\filebrowser-service.out.log 2>nul
del %~dp0filebrowser\filebrowser-service.wrapper.log 2>nul
del %~dp0filebrowser\start2hide.vbs 2>nul
del %~dp0filebrowser\version.txt 2>nul
echo.
echo    清理已完成,正在关闭脚本....
ping localhost -n 2 > nul
exit