Board logo

标题: [代码合集] 【绝对好用】Alist开机启动脚本-强大的ALIST脚本安装更新一条龙,搭建本地影音系统。 [打印本页]

作者: fireye    时间: 2022-11-16 15:42     标题: 【绝对好用】Alist开机启动脚本-强大的ALIST脚本安装更新一条龙,搭建本地影音系统。

本帖最后由 fireye 于 2022-11-16 15:46 编辑

前言
本人在网上折腾很多教程,以及用了论坛提供的提脚,有些是以SH,安装GIT工具来做为开机启动,有些是用VBS脚本来实现,总之特别麻烦。而且需要安装这安装那,我比较懒,干脆动手做一个批处理脚本解决。不多说,先放代码。本脚本是方便Alist搭建网盘,可以配置阿里云,123PAN,百度云等网盘挂载为本地,以WEBDAV的形式挂载。比网上的教程要方便好用。

本脚本的特色自动下载最新的Alist,并且以windows服务的方式启动自动下载最新的RaiDrive,全自动安装自动更新Alist为最新的,每隔三天左右更新一次,添加为计划任务。安装过程中完全自动化,无需手工,会自动显示Alist账号和密码。安装过程中会弹出web界面进行初始化设备会自动添加Alist的目录为环境变量,方便以后执行alist的相关命令,可以在cmd下执行alist --help查看需要设置的是两个地方,一个alistpath就是alist安装路径还有一个需要设置的就是alist服务名,也可以不用改,根据自己的爱好。

最新更新,本人经过大量的测试后再次放出最完美的版本,2022-11.16再次更新

ALIST目录下建立tools文件夹,用于放置各种工具,例如jq,sed,awk等工具
代码进行大量的优化和精简,模块化的操作,可阅读性极强。
解决修复了各种出错
分以下四种情况操作。全部自动选择处理。
重新安装:文件存在,但服务都不存在,需要重装。
全新安装:文件和服务都不存在,需要全新安装。
升级安装:文件存在,服务也安装过了,需要升级。
修复安装:文件不存在,但服务也安装过了,需要修复。
关于RaiDrive无法显示盘符的问题,
原因是开机后ALIST没有启动或者是RaiDrive服务比ALIST服务先启动了,导致这样的问题。解决方案就是,弄一个启动脚本即可。这样的话,Alist以服务方式安装后会比RaiDrive优先启动,这样就不会添加NAS盘符而无故消失的问题。
  1. net stop RaiDrive.Service
  2. TIMEOUT /t 15 >NUL
  3. net start RaiDrive.Service
复制代码
脚本说明


修改路径
首先要修改的就是 set Alistpath=D:\SoftAPP\Alist,改为自己的路径,然后保存运行脚本即可。
运行说明
运行之前记得关闭杀毒软件
右键以管理员的身份运行
二、配置网盘
登录alist后台
账号密码会自动显示出来

Alist添加阿里云盘的设置教程
https://alist.nn.ci/zh/guide/drivers/aliyundrive.html
注意事项
本脚本会自动判断是否需要下载bat之家的第三方工具,例如awk用于获取ALIST版本号。
本脚本会自动判断是升级还是安装。并且加入计划任务,自动更新ALIST
关于卸载
  1. nssm64 stop ServiceName
  2. nssm64 remove ServiceName confirm
  3. #ServiceName 为你的服务名
复制代码



三、RaiDrive挂载设置
本脚本会自动安装raidrive并且会自动弹出设置窗口



附录说明 Alist命令说明

作者: fireye    时间: 2022-11-16 15:47

本帖最后由 fireye 于 2022-11-17 14:39 编辑

附上代码
  1. @echo off
  2. SETlocal enabledelayedexpansion
  3. ::请设置好自己的路径,建议D盘
  4. SET AppPath=D:\SoftAPP\Alist
  5. SET ServiceName=AlistDriveService
  6. SET AppName=alist
  7. SET ReposName=alist-org
  8. SET AppFile=alist-windows-4.0-amd64.zip
  9. SET AppUp=AlistUpgrade
  10. SET ReleasesUrl=https://api.github.com/repos/%ReposName%/%AppName%/releases
  11. SET RaiD=RaiDrive.Service
  12. cd /d %AppPath%
  13. IF NOT EXIST "tools" (md %AppPath%\tools)
  14. ::如果路径不存在,则创建
  15. IF NOT EXIST %AppPath% (md %AppPath%)
  16. ::复制本脚本到安装目录
  17. IF NOT EXIST %AppPath%\%AppUp%.bat  (copy %cd%\%AppUp%.bat %AppPath%)
  18. ::判断是否为第一次安装
  19.   ::判断服务是否存在
  20. IF EXIST %AppPath%\%AppName%.exe (SET ISexist=1) ELSE (SET ISexist=0)
  21.   ::判断文件是否存在
  22. WMIC Service  GET name|Findstr /i "%ServiceName%" >nul&&SET ISservs=1||SET ISservs=0
  23. SET ISfirst=%ISexist%%ISservs%
  24. ::根据当前系统存在各种情况进行判断
  25. IF %ISfirst%==10 GOTO ReInstall
  26. IF %ISfirst%==00 GOTO Install
  27. IF %ISfirst%==01 GOTO RepairInstall
  28. IF %ISfirst%==11 GOTO Upgrade
  29. :ReInstall
  30. ::10-重新安装:文件存在,但服务都不存在,需要重装。
  31.     echo ============重新安装============
  32.     ::调用环境初始化检查模块
  33.     CALL :SetEnv
  34.     ::调用服务安装模块
  35.     CALL :Service
  36.     ::调用Alist配置模块
  37.     CALL :AlistWeb
  38.     ::调用计划任务升级
  39.     CALL :Taskschd
  40.     goto End
  41. :Install
  42. ::00-全新安装:文件和服务都不存在,需要全新安装。
  43.     echo ============全新安装============
  44.     ::调用环境初始化检查模块
  45.     CALL :SetEnv
  46.     ::调用工具下载模块
  47.     CALL :Tools
  48.     ::调用最新版本获取模块
  49.     CALL :Latest
  50.     ::调用下载和启动服务模块
  51.     CALL :Down
  52.     ::调用服务安装模块
  53.     CALL :Service
  54.     ::调用Alist配置模块
  55.     CALL :AlistWeb
  56.     ::调用计划任务升级
  57.     CALL :Taskschd
  58.     goto End
  59.    
  60. :RepairInstall
  61. ::01-修复安装:文件不存在,但服务也安装过了,需要修复。
  62.     echo ============全新安装============
  63.     ::调用最新版本获取模块
  64.     CALL :Latest
  65.     ::调用下载和启动服务模块
  66.     CALL :Down
  67.     ::调用服务安装模块
  68.     CALL :Service
  69.     ::调用Alist配置模块
  70.     CALL :AlistWeb
  71.     goto End
  72. :Upgrade
  73. ::11-升级安装:文件存在,服务也安装过了,需要升级。
  74.     echo ============升级安装============
  75.     ::调用最新版本获取模块
  76.     CALL :Latest
  77.     ::调用当前版本获取模块
  78.     CALL :Current
  79.     echo =====正在判断是否需要升级===
  80.     if "%CurrentVersion%" == "%LatestVersion%" (echo %AppName%版本已经是最新的%LatestVersion%版,无需升级!) else (
  81.       echo %AppName%的当前为%CurrentVersion%版,最新是%LatestVersion%,需要升级!
  82.       nssm64 stop %ServiceName%>NUL 2>NUL
  83.       echo %AppName%正在升级中,请稍等
  84.       ::调用下载和启动服务模块
  85.       CALL :Down
  86.       TIMEOUT /t 2 >NUL
  87.   )
  88.     ::调用服务安装模块
  89.     CALL :Service
  90.       goto End
  91. :SetEnv
  92.     ::環境變量设置
  93.     wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" set VariableValue='%path%;%AppPath%;%AppPath%/tools;'>NUL 2>NUL
  94.     rem taskkill /f /im explorer.exe & start explorer.exe >NUL 2>NUL
  95.      ::检查chocolatey
  96.      WMIC Service  GET name|Findstr /i "%ServiceName%" >nul&&echo %ServiceName% is already installed ||nssm64 install %ServiceName% %AppPath%\%AppName%.exe server&TIMEOUT /t 2 >NUL
  97.     ::检查chocolatey
  98.     IF NOT EXIST "%ALLUSERSPROFILE%\chocolatey" (
  99.      @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
  100.     )
  101.      ::安装RaiDrive 先判断系统是不事安装过了raidrive
  102.      echo 正在安装RaiDrive网盘挂载工具
  103.      WMIC Service  GET name|Findstr /i "%RaiD%" >nul&&echo RaiDrive is already installed ||echo A|choco install raidrive&TIMEOUT /t 2 >NUL
  104.     goto :EOF
  105. :Tools
  106.   ::下載各種組件到Alist的安裝目錄
  107.   SET ToolList=nssm64;gawk64;head;nircmd64;nircmdc64;FVerTest;dllcall;1.6/jq64;6.00/unzip;3.0/grep;1.19.4/wget64;1.19.4/wget64;4.8/sed64
  108.   SET BatUrl=http://bcn.bathome.net/tool
  109.   :LoopDown
  110.   for /f "tokens=1* delims=;" %%a in ("!ToolList!") do (
  111.       SET ToolName=%%a.exe
  112.       if not exist "%cd%\!ToolName!" (Curl -C - --create-dirs -O --output-dir tools %BatUrl%/!ToolName! >NUL 2>NUL)
  113.       SET ToolList=%%b
  114.   )
  115.   if defined ToolList goto :LoopDown
  116.   rem Curl -C - -O --remote-name-all "%BatUrl%/1.6/jq64.exe" "%BatUrl%/6.00/unzip.exe" "%BatUrl%/3.0/grep.exe" "%BatUrl%/1.19.4/wget64.exe" "%BatUrl%/4.8/sed64.exe"
  117.   rem Curl -C - --create-dirs -O --output-dir tools --remote-name-all "%BatUrl%/1.6/jq64.exe" "%BatUrl%/6.00/unzip.exe" "%BatUrl%/3.0/grep.exe" "%BatUrl%/1.19.4/wget64.exe" "%BatUrl%/4.8/sed64.exe" >NUL 2>NUL
  118.   ::
  119.   dllcall SendMessageTimeoutA,65535,26,,"Environment",2,4444,,user32
  120.   goto :EOF
  121. :Service
  122.     ::获取服务的安装状态,判断服务是否存在
  123.     WMIC Service  GET name|Findstr /i "%ServiceName%" >nul&&echo %ServiceName% is already installed ||nssm64 install %ServiceName% %AppPath%\%AppName%.exe server&TIMEOUT /t 2 >NUL
  124.     nssm64 restart %ServiceName%>NUL 2>NUL&TIMEOUT /t 2 >NUL
  125.     nircmd service restart %RaiD%>NUL 2>NUL&TIMEOUT /t 2 >NUL
  126.     goto :EOF
  127. :AlistWeb
  128.     echo 恭喜成功,%AppName%的版本为&&%AppName% version | gawk64 -F": " "NR==5 {print $2}"
  129.     echo =====您现在的账号密码如下,记得复制下来===
  130.     %AppName%.exe admin&TIMEOUT /t 15 >NUL
  131.     echo 开始打开ALIST界面
  132.     start http://localhost:5244/@login
  133.     echo =====请设置好您的ALIST,然后按任意键继续===
  134.     pause
  135.     goto :EOF
  136. :Latest
  137.     ::获取云上最新版本
  138.     curl -sL !ReleasesUrl! | jq64 -r ".[0].name" >LatestVersion.txt
  139.      ::设置最新版本信息为变量LatestVersion
  140.     for /f "delims=" %%a in (LatestVersion.txt) do (
  141.       SET LatestVersion=%%a
  142.     )
  143.     goto :EOF
  144. :Current
  145.      ::获取本地版本信息
  146.     %AppName% version | gawk64 -F": " "NR==5 {print $2}" >CurrentVersion.txt
  147.      ::设置版本信息为变量CurrentVersion
  148.     for /f "delims=" %%b in (CurrentVersion.txt) do (
  149.       SET CurrentVersion=%%b
  150.     )
  151.     goto :EOF
  152. :Down
  153.     ::获取下载地址
  154.     curl -fsSL !ReleasesUrl! | jq64 -r ".[0].assets[].browser_download_url" | grep -e "%AppFile%">down.txt
  155.     for /f "delims=" %%d in (down.txt) do (SET AppUrl=https://ghproxy.com/%%d)
  156.     ::下载安装
  157.     echo 正在下载中......
  158.     curl -C - -O !AppUrl!
  159.     ECHO Y|unzip -o -d %AppPath% %AppFile% >NUL 2>NUL
  160.     goto :EOF
  161. :Taskschd
  162.     echo 正在添加计划任务,自动更新Alist
  163.     SET var=0
  164.     ::读取任务计划中的%AppUp%任务,如果有就显示,如果没有就报错
  165.     schtasks /query /tn %AppUp% |findstr /m "%AppUp%" >NUL 2>NUL&&SET var=1  
  166.     ::检查上一条指令是否产生与ABC有关的信息,如果没有就执行X;如过有就执行Y
  167.     if ERRORLEVEL 1 (schtasks /create /ru system /tn "%AppUp%" /tr %AppPath%\%AppUp%.bat /ST 21:30 /sc weekly /mo 1 /d FRI&&echo 添加升级任务成功)else (echo 升级任务已经存在)
  168.     TIMEOUT /t 2 >NUL
  169.     net start %RaiD% >NUL 2>NUL
  170.     goto :EOF
  171. :End
  172. ::设置RaiDrive的启动方式设置为自动延迟启动,避免Alist还没启动。Raidrive先启动导致网盘重启后无法挂载的问题。
  173. sc config "%RaiD%" start=delayed-auto
  174. ::nircmd exec hide "nircmd cmdwait 100 service stop RaiDrive.Service"
  175. ::nircmd exec hide "nircmd cmdwait 200 service start RaiDrive.Service"
  176. DEL /s /q CurrentVersion.txt down.txt LatestVersion.txt >NUL 2>NUL
  177. ::CLS&ECHO.&
  178. ECHO 完成! &TIMEOUT /t 2 >NUL
复制代码

作者: fireye    时间: 2022-11-16 16:50

本帖最后由 fireye 于 2022-12-5 17:38 编辑

alist开机启动脚本-ALIST一键脚本,百度网盘分享给大家了。
链接: https://pan.baidu.com/s/1cThotUD5nSBQP-UYi1cpFQ?pwd=5hj1 提取码: 5hj1 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v3的分享
作者: fireye    时间: 2022-11-16 17:12






作者: fireye    时间: 2022-11-16 17:12

楼上是架设后的播放效果。
作者: fireye    时间: 2022-11-17 23:13

已经修复了闪退的问题。
作者: wu737    时间: 2022-11-26 23:39

大佬牛哇,苦苦寻找这么久,终于找到了
作者: zachliu    时间: 2023-2-4 10:07

安装成功了,感谢!  请问大佬是否能直接拖动文件上传到网盘,现在会提示”你需要权限来执行此操作“
作者: alligater    时间: 2023-3-9 16:38

大佬牛批,安装好了,就是自动更新有点问题,不能更新到最新版




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2