标题: [代码合集] 【绝对好用】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盘符而无故消失的问题。- net stop RaiDrive.Service
- TIMEOUT /t 15 >NUL
- net start RaiDrive.Service
复制代码
脚本说明
- 自动下载最新的Alist,并且以windows服务的方式启动
- 自动下载最新的RaiDrive,全自动安装
- 自动更新Alist为最新的,每隔三天左右更新一次,添加为计划任务。
- 安装过程中完全自动化,无需手工,会自动显示Alist账号和密码。
- 安装过程中会弹出web界面进行初始化设备
- 会自动添加Alist的目录为环境变量,方便以后执行alist的相关命令,可以在cmd下执行alist --help查看
- 需要设置的是两个地方,一个alistpath就是alist安装路径
- 还有一个需要设置的就是alist服务名,也可以不用改,根据自己的爱好。
修改路径
首先要修改的就是 set Alistpath=D:\SoftAPP\Alist,改为自己的路径,然后保存运行脚本即可。
运行说明
运行之前记得关闭杀毒软件
右键以管理员的身份运行
二、配置网盘
登录alist后台
账号密码会自动显示出来
Alist添加阿里云盘的设置教程
https://alist.nn.ci/zh/guide/drivers/aliyundrive.html
注意事项
本脚本会自动判断是否需要下载bat之家的第三方工具,例如awk用于获取ALIST版本号。
本脚本会自动判断是升级还是安装。并且加入计划任务,自动更新ALIST
关于卸载- nssm64 stop ServiceName
- nssm64 remove ServiceName confirm
- #ServiceName 为你的服务名
复制代码
三、RaiDrive挂载设置
本脚本会自动安装raidrive并且会自动弹出设置窗口
附录说明 Alist命令说明
作者: fireye 时间: 2022-11-16 15:47
本帖最后由 fireye 于 2022-11-17 14:39 编辑
附上代码- @echo off
- SETlocal enabledelayedexpansion
- ::请设置好自己的路径,建议D盘
- SET AppPath=D:\SoftAPP\Alist
- SET ServiceName=AlistDriveService
- SET AppName=alist
- SET ReposName=alist-org
- SET AppFile=alist-windows-4.0-amd64.zip
- SET AppUp=AlistUpgrade
- SET ReleasesUrl=https://api.github.com/repos/%ReposName%/%AppName%/releases
- SET RaiD=RaiDrive.Service
- cd /d %AppPath%
- IF NOT EXIST "tools" (md %AppPath%\tools)
-
- ::如果路径不存在,则创建
- IF NOT EXIST %AppPath% (md %AppPath%)
-
- ::复制本脚本到安装目录
- IF NOT EXIST %AppPath%\%AppUp%.bat (copy %cd%\%AppUp%.bat %AppPath%)
-
-
- ::判断是否为第一次安装
- ::判断服务是否存在
- IF EXIST %AppPath%\%AppName%.exe (SET ISexist=1) ELSE (SET ISexist=0)
- ::判断文件是否存在
- WMIC Service GET name|Findstr /i "%ServiceName%" >nul&&SET ISservs=1||SET ISservs=0
- SET ISfirst=%ISexist%%ISservs%
-
- ::根据当前系统存在各种情况进行判断
- IF %ISfirst%==10 GOTO ReInstall
- IF %ISfirst%==00 GOTO Install
- IF %ISfirst%==01 GOTO RepairInstall
- IF %ISfirst%==11 GOTO Upgrade
-
- :ReInstall
- ::10-重新安装:文件存在,但服务都不存在,需要重装。
- echo ============重新安装============
- ::调用环境初始化检查模块
- CALL :SetEnv
-
- ::调用服务安装模块
- CALL :Service
-
- ::调用Alist配置模块
- CALL :AlistWeb
-
- ::调用计划任务升级
- CALL :Taskschd
-
- goto End
-
- :Install
- ::00-全新安装:文件和服务都不存在,需要全新安装。
- echo ============全新安装============
- ::调用环境初始化检查模块
- CALL :SetEnv
-
- ::调用工具下载模块
- CALL :Tools
-
- ::调用最新版本获取模块
- CALL :Latest
-
- ::调用下载和启动服务模块
- CALL :Down
-
- ::调用服务安装模块
- CALL :Service
-
- ::调用Alist配置模块
- CALL :AlistWeb
-
- ::调用计划任务升级
- CALL :Taskschd
-
- goto End
-
-
- :RepairInstall
- ::01-修复安装:文件不存在,但服务也安装过了,需要修复。
- echo ============全新安装============
- ::调用最新版本获取模块
- CALL :Latest
-
- ::调用下载和启动服务模块
- CALL :Down
-
- ::调用服务安装模块
- CALL :Service
-
- ::调用Alist配置模块
- CALL :AlistWeb
-
- goto End
-
- :Upgrade
- ::11-升级安装:文件存在,服务也安装过了,需要升级。
- echo ============升级安装============
-
- ::调用最新版本获取模块
- CALL :Latest
-
- ::调用当前版本获取模块
- CALL :Current
-
- echo =====正在判断是否需要升级===
- if "%CurrentVersion%" == "%LatestVersion%" (echo %AppName%版本已经是最新的%LatestVersion%版,无需升级!) else (
- echo %AppName%的当前为%CurrentVersion%版,最新是%LatestVersion%,需要升级!
- nssm64 stop %ServiceName%>NUL 2>NUL
- echo %AppName%正在升级中,请稍等
-
- ::调用下载和启动服务模块
- CALL :Down
- TIMEOUT /t 2 >NUL
-
- )
- ::调用服务安装模块
- CALL :Service
- goto End
-
-
- :SetEnv
- ::環境變量设置
- wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" set VariableValue='%path%;%AppPath%;%AppPath%/tools;'>NUL 2>NUL
- rem taskkill /f /im explorer.exe & start explorer.exe >NUL 2>NUL
-
- ::检查chocolatey
- WMIC Service GET name|Findstr /i "%ServiceName%" >nul&&echo %ServiceName% is already installed ||nssm64 install %ServiceName% %AppPath%\%AppName%.exe server&TIMEOUT /t 2 >NUL
-
- ::检查chocolatey
- IF NOT EXIST "%ALLUSERSPROFILE%\chocolatey" (
- @"%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"
- )
-
- ::安装RaiDrive 先判断系统是不事安装过了raidrive
- echo 正在安装RaiDrive网盘挂载工具
- WMIC Service GET name|Findstr /i "%RaiD%" >nul&&echo RaiDrive is already installed ||echo A|choco install raidrive&TIMEOUT /t 2 >NUL
- goto :EOF
-
-
- :Tools
- ::下載各種組件到Alist的安裝目錄
- 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
- SET BatUrl=http://bcn.bathome.net/tool
- :LoopDown
- for /f "tokens=1* delims=;" %%a in ("!ToolList!") do (
- SET ToolName=%%a.exe
- if not exist "%cd%\!ToolName!" (Curl -C - --create-dirs -O --output-dir tools %BatUrl%/!ToolName! >NUL 2>NUL)
- SET ToolList=%%b
- )
- if defined ToolList goto :LoopDown
- 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"
- 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
- ::
- dllcall SendMessageTimeoutA,65535,26,,"Environment",2,4444,,user32
- goto :EOF
-
-
- :Service
- ::获取服务的安装状态,判断服务是否存在
- WMIC Service GET name|Findstr /i "%ServiceName%" >nul&&echo %ServiceName% is already installed ||nssm64 install %ServiceName% %AppPath%\%AppName%.exe server&TIMEOUT /t 2 >NUL
- nssm64 restart %ServiceName%>NUL 2>NUL&TIMEOUT /t 2 >NUL
- nircmd service restart %RaiD%>NUL 2>NUL&TIMEOUT /t 2 >NUL
- goto :EOF
-
- :AlistWeb
- echo 恭喜成功,%AppName%的版本为&&%AppName% version | gawk64 -F": " "NR==5 {print $2}"
- echo =====您现在的账号密码如下,记得复制下来===
- %AppName%.exe admin&TIMEOUT /t 15 >NUL
- echo 开始打开ALIST界面
- start http://localhost:5244/@login
- echo =====请设置好您的ALIST,然后按任意键继续===
- pause
- goto :EOF
-
- :Latest
- ::获取云上最新版本
- curl -sL !ReleasesUrl! | jq64 -r ".[0].name" >LatestVersion.txt
- ::设置最新版本信息为变量LatestVersion
- for /f "delims=" %%a in (LatestVersion.txt) do (
- SET LatestVersion=%%a
- )
- goto :EOF
-
- :Current
- ::获取本地版本信息
- %AppName% version | gawk64 -F": " "NR==5 {print $2}" >CurrentVersion.txt
- ::设置版本信息为变量CurrentVersion
- for /f "delims=" %%b in (CurrentVersion.txt) do (
- SET CurrentVersion=%%b
- )
- goto :EOF
-
- :Down
- ::获取下载地址
- curl -fsSL !ReleasesUrl! | jq64 -r ".[0].assets[].browser_download_url" | grep -e "%AppFile%">down.txt
- for /f "delims=" %%d in (down.txt) do (SET AppUrl=https://ghproxy.com/%%d)
-
- ::下载安装
- echo 正在下载中......
- curl -C - -O !AppUrl!
- ECHO Y|unzip -o -d %AppPath% %AppFile% >NUL 2>NUL
- goto :EOF
-
- :Taskschd
- echo 正在添加计划任务,自动更新Alist
- SET var=0
- ::读取任务计划中的%AppUp%任务,如果有就显示,如果没有就报错
- schtasks /query /tn %AppUp% |findstr /m "%AppUp%" >NUL 2>NUL&&SET var=1
- ::检查上一条指令是否产生与ABC有关的信息,如果没有就执行X;如过有就执行Y
- 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 升级任务已经存在)
- TIMEOUT /t 2 >NUL
- net start %RaiD% >NUL 2>NUL
-
- goto :EOF
-
- :End
- ::设置RaiDrive的启动方式设置为自动延迟启动,避免Alist还没启动。Raidrive先启动导致网盘重启后无法挂载的问题。
- sc config "%RaiD%" start=delayed-auto
-
- ::nircmd exec hide "nircmd cmdwait 100 service stop RaiDrive.Service"
- ::nircmd exec hide "nircmd cmdwait 200 service start RaiDrive.Service"
-
- DEL /s /q CurrentVersion.txt down.txt LatestVersion.txt >NUL 2>NUL
- ::CLS&ECHO.&
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |