本帖最后由 hashiqi 于 2022-2-14 16:07 编辑
【第一部分】脚本是否能精准完成一键重装的任务,第一部分检测环境是很重要的。在我上个帖子中有发的检测内容,经过几次优化改版,前期检测的内容都是为了后边能接近100%的完成一键重装。
1.检查当前系统磁盘是否=C:
2.检查C:剩余可用空间
3.检查DEFGH盘剩余空间
4.检查DEFGH盘是否存在
5.比较DEFGH盘,得到剩余空间最大的盘,并给他一个变量作为系统下载目录。
6.检查网络
7.检查BitLocker,{一些厂家笔记本自带这个锁} 有的话脚本是拒绝执行的。
8.检查物理内存是否>=4G 太小老年机是不行的。
9.检查更新。
脚本前边检查的内容都是为了避免一些复杂的电脑情况。符合检测条件的后续就能近乎100%的完成一键重装。
:Check
msg * /time:3 "正在检查软件及系统运行环境,请稍后!(约5-10秒左右~)"
:CheckSystemDiskC
if /i %SystemDrive% == C: (goto DiskSpaceC) else (goto NOSystemDiskC)
:NOSystemDiskC
mshta vbscript:msgbox("当前系统所在磁盘不是C盘,工具无法正常运行。且工具无法在PE下使用。",16+4096,"艾瑞斯xxxxx 提醒:")(window.close)
exit
:DiskSpaceC
for /f "tokens=2 delims==" %%c in ('wmic logicaldisk %SystemDrive% get FreeSpace/value') do set fsize=%%c
set fsize=%fsize:~0,-10%
if %fsize% geq 2 (goto CheckDataDisk) else (goto NODiskSpaceC)
:NODiskSpaceC
mshta vbscript:msgbox("磁盘剩余空间不足。要求C盘剩余空间大于2G工具方可正常运行,请清理后在尝试。",16+4096,"艾瑞斯xxxx 提醒:")(window.close)
exit
rem 检查DEFGH磁盘剩余空间
:Network
ping -n 1 baidu.com
if errorlevel == 0 goto RAM
if errorlevel == 1 goto NONetwork
:NONetwork
mshta vbscript:msgbox("程序运行需要网络,连网都没有搞什么,再见!",16+4096,"艾瑞斯xxxx 提醒:")(window.close)
exit
:RAM
for /f "tokens=2 delims==" %%r in ('wmic os get totalvisiblememorysize/value') do set ram=%%r
set ram=%ram:~0,-6%
if %ram% geq 30 (goto BitLocker) else (goto NORAM)
:NORAM
mshta vbscript:msgbox("检测到内存连4G都没有,这么低配置臣妾办不到啊。",16+4096,"艾瑞斯xxx 提醒:")(window.close)
exit
:BitLocker
if exist %SystemRoot%\System32\manage-bde.exe (goto CheckBitLocker) else (goto Update)
:CheckBitLocker
manage-bde -status %SystemDrive% |find /I "保护状态"
IF %ERRORLEVEL% EQU 1 goto Update
manage-bde -status %SystemDrive% |find /I "保护关闭"
IF %ERRORLEVEL% EQU 1 goto YESBitLocker
manage-bde -status %SystemDrive% |find /I "0.0%"
IF %ERRORLEVEL% EQU 0 goto Update
IF %ERRORLEVEL% EQU 1 goto YESBitLocker
:YESBitLocker
mshta vbscript:msgbox("电脑存在BitLocker磁盘锁,需手动解除后工具方可使用。否则磁盘处于上锁状态无法安装。",16+4096,"艾瑞斯xxxx 提醒:")(window.close)
exit
:Update
del /f /q Update.txt
Aria2c.exe --allow-overwrite=true 网址 -o Update.txt
ping localhost -n 2 > nul
if exist Update.txt (goto Version) else (goto UpdateX2)
:UpdateX2
Aria2c.exe --allow-overwrite=true 网址 -o Update.txt
ping localhost -n 2 > nul
if exist Update.txt (goto Version) else (goto NOUpdate)
:Version
find /I V3.8" Update.txt
IF %ERRORLEVEL% EQU 0 goto SELECT
IF %ERRORLEVEL% EQU 1 goto NOUpdate
:NOUpdate
mshta vbscript:msgbox("程序检测到已发现新版本,请至xxx下载最新版本使用!",16+4096,"艾瑞斯xxx 提醒:")(window.close)
exit
|