|
本帖最后由 piaomusic 于 2025-8-26 16:51 编辑
可以指定目录的啊。 我做成了 单文件版。 你可以安装7Z后替换一下批处理。
https://www.123912.com/s/sj4rVv-DGIVH
@pushd "%~dp0" >nul 2>&1
@echo off
:: GHFS HTTP文件服务器
:: 安装/卸载GHFS系统服务
:: 设置窗口大小(80列×20行)
mode con: cols=80 lines=20
:: 检查管理员权限
NET FILE >nul 2>&1
if %errorLevel% neq 0 (
echo 请使用管理员权限运行此脚本
timeout /t 5 >nul
exit /b 1
)
:: 设置变量
set SERVICE_NAME=GHFS
set GHFS_EXE=ghfs.exe
set NSSM_EXE=nssm.exe
set SHARE_DIR=D:\BaiduNetdiskDownload 【在这里指定目录】
set PORT=80 【在这里指定端口】
set TIMEOUT=30
:: 获取脚本所在目录
set "SCRIPT_DIR=%~dp0"
cd /d "%SCRIPT_DIR%"
:menu
cls
echo ==============================================
echo GHFS HTTP文件服务菜单
echo ==============================================
echo.
echo 1. 安装GHFS服务
echo 2. 卸载GHFS服务
echo.
echo 3秒内未选择将自动安装...
echo.
:: 设置3秒等待时间,如果无输入则自动选择1
choice /C 12 /N /T 3 /D 1 >nul
set choice=%errorlevel%
if "%choice%"=="1" goto install
if "%choice%"=="2" goto uninstall
:install
cls
echo 正在准备安装GHFS服务...
echo.
:: 检查必需文件
if not exist "%GHFS_EXE%" (
echo 错误:当前目录下未找到 %GHFS_EXE%
timeout /t 3 >nul
exit /b 1
)
if not exist "%NSSM_EXE%" (
echo 错误:当前目录下未找到 %NSSM_EXE%
timeout /t 3 >nul
exit /b 1
)
:: 创建共享目录
if not exist "%SHARE_DIR%\" (
echo 正在创建共享目录 %SHARE_DIR%...
mkdir "%SHARE_DIR%" >nul 2>&1
if errorlevel 1 (
echo 错误:无法创建目录
timeout /t 3 >nul
exit /b 1
)
)
:: 检查并停止现有服务
echo 正在检查现有服务...
sc query "%SERVICE_NAME%" >nul 2>&1
if %errorLevel% equ 0 (
echo 服务已存在,正在停止并删除...
net stop "%SERVICE_NAME%" >nul 2>&1
sc delete "%SERVICE_NAME%" >nul 2>&1
timeout /t 2 >nul
)
:: 注册服务
echo 正在注册服务...
"%NSSM_EXE%" install "%SERVICE_NAME%" "%CD%\%GHFS_EXE%" --listen :%PORT% --root "%SHARE_DIR%" >nul 2>&1
if errorlevel 1 (
echo 错误:服务注册失败
timeout /t 3 >nul
exit /b 1
)
:: 配置服务
"%NSSM_EXE%" set "%SERVICE_NAME%" DisplayName "GHFS HTTP文件服务" >nul
"%NSSM_EXE%" set "%SERVICE_NAME%" Description "提供 %SHARE_DIR% 目录的HTTP文件服务,监听 %PORT% 端口" >nul
"%NSSM_EXE%" set "%SERVICE_NAME%" Start SERVICE_AUTO_START >nul
"%NSSM_EXE%" set "%SERVICE_NAME%" AppDirectory "%CD%" >nul
"%NSSM_EXE%" set "%SERVICE_NAME%" AppStdout "%CD%\%SERVICE_NAME%.log" >nul
"%NSSM_EXE%" set "%SERVICE_NAME%" AppStderr "%CD%\%SERVICE_NAME%.log" >nul
:: 启动服务
echo 正在启动服务...
net start "%SERVICE_NAME%" >nul 2>&1
if errorlevel 1 (
echo 错误:服务启动失败,请检查日志
timeout /t 3 >nul
exit /b 1
)
:: 检查服务状态
echo 正在检查服务状态...
for /L %%i in (1,1,%TIMEOUT%) do (
sc query "%SERVICE_NAME%" | find "RUNNING" >nul
if not errorlevel 1 (
echo 服务安装成功!
echo 共享目录:%SHARE_DIR%
echo 访问地址:http://localhost:%PORT%/
:: 添加防火墙规则
echo 正在配置防火墙...
netsh advfirewall firewall add rule name="%SERVICE_NAME%" dir=in action=allow protocol=TCP localport=%PORT% >nul 2>&1
:: 正常退出
timeout /t 3 >nul
exit /b 0
)
timeout /t 1 >nul
)
echo 错误:服务未在%TIMEOUT%秒内启动
exit /b 1
:uninstall
cls
echo 正在准备卸载GHFS服务...
echo.
echo 正在停止服务...
net stop "%SERVICE_NAME%" >nul 2>&1
echo 正在删除服务...
sc delete "%SERVICE_NAME%" >nul 2>&1
echo 正在移除防火墙规则...
netsh advfirewall firewall delete rule name="%SERVICE_NAME%" >nul 2>&1
echo 服务已成功卸载
timeout /t 3 >nul
exit /b 0
|
|