IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[原创] 用批处理制作【一键重装系统程序】(仅代码)【一】

[复制链接]
hashiqi 发表于 2021-12-25 20:36:07 | 显示全部楼层 |阅读模式

IT天空 定制版高速U盘 128G | 固态U盘 256G Pro/512G Pro
本帖最后由 hashiqi 于 2021-12-26 14:25 编辑
用批处理制作【一键重装系统程序】程序执行分两个部分第一部批处理代码
批处理执行流程思路:
1.确认开始
2.检测网络
3.检测更新
4.检测磁盘
5.检测磁盘可用空间
6.检测内存
7.电源设置不休眠
8.执行选择装哪个系统并记录
9.创建并清空程序使用的文件夹
10.下载备用驱动
11.下载PE文件数据
12.校验PE文件
13.获取8选择的系统
14.下载8选择的系统
15.校验系统文件
16.判定引导方式
17.写引导自动进PE

@pushd "%~dp0" >nul 2>&1
@echo off
setlocal enabledelayedexpansion

:START
set Vbscript=Msgbox("请确认关闭安全杀毒类程序后在使用。"^&vbCrLf^&"点击【确定】将自动获取数据并执行本程序。",1+4096, 提醒:")
for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a"
set ReturnValue1=确定
set ReturnValue2=取消或关闭窗口
if %MsHtaReturnValue% == 1 goto Netwoek
if %MsHtaReturnValue% == 2 goto EXIT
rem 这里仅仅是检测下网络是否通
:Netwoek
ping -n 1 baidu.com
if errorlevel == 0 goto Update
if errorlevel == 1 goto NONetwoek

:NONetwoek
mshta vbscript:msgbox("程序运行需要网络,连网都没有搞什么,再见!",16+4096,提醒:")(window.close)
exit
rem 这里检测一下版本是否有新版本原理:下载一下云端的txt然后检测里边内容是否和程序内对应,不对应的话那肯定是有新版本
:Update
aria2c.exe --allow-overwrite=true -i UpdateDownload.txt
ping localhost -n 2 > nul
find /I "V25" update.txt
IF %ERRORLEVEL% EQU 0 goto diskD
IF %ERRORLEVEL% EQU 1 goto NOUpdate

:NOUpdate
mshta vbscript:msgbox("程序检测到已发现新版本,请至xxxx下载最新版本使用!",16+4096, 提醒:")(window.close)
exit
re检测一下是否存在D盘 ,要作为下载的系统文件存放位置。
:diskD
if exist D: (goto SPACExC) else (goto NOdiskD)

:NOdiskD
mshta vbscript:msgbox("没有检测到D盘存在,程序无法存储安装文件及运行。",16+4096, 提醒:")(window.close)
exit
rem 这里检测一下CD可用空间是否足够
:SPACExC
for /f "tokens=2 delims==" %%a in ('wmic logicaldisk %SystemDrive% get FreeSpace/value') do set fsize=%%a
set fsize=%fsize:~0,-10%
if %fsize% gtr 1 (goto SPACExD) else (goto NOSPACE)

:SPACExD
for /f "tokens=2 delims==" %%a in ('wmic logicaldisk D: get FreeSpace/value') do set fsize=%%a
set fsize=%fsize:~0,-10%
if %fsize% gtr 5 (goto ROM) else (goto NOSPACE)

:NOSPACE
mshta vbscript:msgbox("磁盘剩余空间不足,C盘剩余空间>2G,D盘剩余空间>6G,请清理后在尝试。",16+4096,xxxx 提醒:")(window.close)
exit
rem 这里检测一下内存时候大于4G 不够的话第二阶段PE力安装可能会不够用出错所以大4G才能用
:ROM
for /f "tokens=2 delims==" %%a in ('wmic os get totalvisiblememorysize/value') do set rom=%%a
set rom=%rom:~0,-7%
if %rom% gtr 3 (goto Powercfg) else (goto NOROM)

:NOROM
mshta vbscript:msgbox("检测到内存连4G都没有,这么低配置臣妾办不到啊。",16+4096, 提醒:")(window.close)
exit
re这里 电源设置一下 避免长时间下载文件 电脑熄屏
:Powercfg
Powercfg -x -monitor-timeout-ac 0
Powercfg -x -monitor-timeout-dc 0
powercfg -x -standby-timeout-ac 0
powercfg -x -standby-timeout-dc 0
rem 这里检测一下要选择哪个版本安装,并先生成txt记录一下
:SELECT
echo Y|start /wait select.bat
if exist select.txt (goto EditFile) else (goto NOselect)
【这一部分是select.bat里的内容】

游客,如果您要查看本帖隐藏内容请回复



:NOselect
mshta vbscript:msgbox("没有执行选择,关闭了选择窗口本程序也即将退出。",16+4096, 提醒:")(window.close)
exit
rem 这里就是简单的文件加创建删除处理
:EditFile

游客,如果您要查看本帖隐藏内容请回复


rem 这里下载一下网卡版驱动避免装好有些电脑没网卡
:DrvCeo
echo Y|start "■■■■■■■■■■■■■■■正在下载文件中,请勿关闭本窗口■■■■■■■■■■■■■■■" /wait aria2c.exe -s 8 -x 8 --allow-overwrite=true -d D:\installWindowsOS -i DrvCeoDownload.txt
ping localhost -n 3 > nul
if exist D:\installWindowsOS\驱动总裁网卡版.exe.aria2 (goto EXITDownload) else (goto PEDownload)
rem 上边的一条拍段是否强关了下载窗口 是否下载完了,

rem 下边下载PE并包含了校验数据
:PEDownload
echo Y|start "■■■■■■■■■■■■■■■正在下载文件中,请勿关闭本窗口■■■■■■■■■■■■■■■" /wait aria2c.exe --allow-overwrite=true -d %SystemDrive%\PEfile -i PEx1Download.txt
echo Y|start "■■■■■■■■■■■■■■■正在下载文件中,请勿关闭本窗口!■■■■■■■■■■■■■■■" /wait aria2c.exe -s 8 -x 8 --allow-overwrite=true -d %SystemDrive%\PEfile -i PEx2Download.txt
ping localhost -n 3 > nul
if exist %SystemDrive%\PEfile\10PEx64.wim.aria2 (goto EXITDownload) else (goto BOOTSDI)

:BOOTSDI
msg * /time:3 "正在后台校验所下载的文件数据!"
CertUtil -hashfile %SystemDrive%\PEfile\BOOT.SDI SHA1 >BOOT.SDI.txt
ping localhost -n 2 > nul
find /I "c8f481c93682c181a36fa8bbadd1cc71918f13c7" BOOT.SDI.txt
IF %ERRORLEVEL% EQU 0 goto 10PEX64WIM
find /I "c8 f4 81 c9 36 82 c1 81 a3 6f a8 bb ad d1 cc 71 91 8f 13 c7" BOOT.SDI.txt
IF %ERRORLEVEL% EQU 0 goto 10PEX64WIM
IF %ERRORLEVEL% EQU 1 goto PEERROR

:10PEX64WIM
CertUtil -hashfile %SystemDrive%\PEfile\10PEx64.wim SHA1 >10PEx64.wim.txt
ping localhost -n 2 > nul
find /I "ca854dfd31429095b2e02ac2a2e77cfd2ba775da" 10PEx64.wim.txt
IF %ERRORLEVEL% EQU 0 goto READSELECT
find /I "ca 85 4d fd 31 42 90 95 b2 e0 2a c2 a2 e7 7c fd 2b a7 75 da" 10PEx64.wim.txt
IF %ERRORLEVEL% EQU 0 goto READSELECT
IF %ERRORLEVEL% EQU 1 goto PEERROR

:PEERROR
mshta vbscript:msgbox("文件数据不完整或未下载完成,请重新运行程序!",16+4096, 提醒:")(window.close)
exit

:EXITDownload
mshta vbscript:msgbox("下载程序被强行关闭,本程序也即将结束。",16+4096, 提醒:")(window.close)
exit

rem 这里就是获取上边选择要安装哪个版本 并执行下载对应的。
:READSELECT
find /I "WIN10" select.txt
IF %ERRORLEVEL% EQU 0 goto WIN10Download
find /I "WIN11" select.txt
IF %ERRORLEVEL% EQU 0 goto WIN11Download
find /I "EXIT" select.txt
IF %ERRORLEVEL% EQU 0 goto EXIT

:WIN10Download
echo Y|start "■■■■■■■■■■■■■■■正在下载文件中,请勿关闭本窗口■■■■■■■■■■■■■■■" /wait aria2c.exe -s 8 -x 8 --allow-overwrite=true -d D:\installWindowsOS -i WIN10Download.txt
ping localhost -n 3 > nul
if exist D:\installWindowsOS\install.esd.aria2 (goto EXITDownload) else (goto WIN10SHA1)

:WIN10SHA1
msg * /time:5 "正在后台校验所下载的文件数据!"
CertUtil -hashfile D:\installWindowsOS\install.esd SHA1 >install.esd.txt
ping localhost -n 2 > nul
find /I "9c8b1fcb4b61126af5a1016d0bd2bce083112d3c" install.esd.txt
IF %ERRORLEVEL% EQU 0 goto BOOT
find /I "9c 8b 1f cb 4b 61 12 6a f5 a1 01 6d 0b d2 bc e0 83 11 2d 3c" install.esd.txt
IF %ERRORLEVEL% EQU 0 goto BOOT
IF %ERRORLEVEL% EQU 1 goto OSERROR

:WIN11Download
echo Y|start "■■■■■■■■■■■■■■■正在下载文件中,请勿关闭本窗口■■■■■■■■■■■■■■■" /wait aria2c.exe -s 8 -x 8 --allow-overwrite=true -d D:\installWindowsOS -i WIN11Download.txt
ping localhost -n 3 > nul
if exist D:\installWindowsOS\install.esd.aria2 (goto EXITDownload) else (goto WIN11SHA1)

:WIN11SHA1
msg * /time:5 "正在后台校验所下载的文件数据!"
CertUtil -hashfile D:\installWindowsOS\install.esd SHA1 >install.esd.txt
ping localhost -n 2 > nul
find /I "5652a32fb840fff402098970788f48d61e112277" install.esd.txt
IF %ERRORLEVEL% EQU 0 goto BOOT
find /I "56 52 a3 2f b8 40 ff f4 02 09 89 70 78 8f 48 d6 1e 11 22 77" install.esd.txt
IF %ERRORLEVEL% EQU 0 goto BOOT
IF %ERRORLEVEL% EQU 1 goto OSERROR

:OSERROR
set Vbscript=Msgbox("系统文件数据不完整或未下载完成。"^&vbCrLf^&"点击【确定】将再次执行系统下载程序。"^&vbCrLf^&"点击【取消】将关闭本程序,后续可重新运行程序",16+4096,提醒:")
for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a"
set ReturnValue1=确定
set ReturnValue2=取消或关闭窗口
if %MsHtaReturnValue% == 1 goto READSELECT
if %MsHtaReturnValue% == 2 goto EXIT


rem 下边就是拍段引导方式并写入引导并重启进入第二阶段,。
:BOOT
bcdedit >boot.txt
ping localhost -n 2 > nul
find /I "\Windows\system32\winload.exe" boot.txt
IF %ERRORLEVEL% EQU 0 goto MBR
IF %ERRORLEVEL% EQU 1 goto GPT


:MBR
set id1={%time:~6,2%%time:~9,2%9ae2-251d-4c33-8824-1f8b578d028b}

游客,如果您要查看本帖隐藏内容请回复

bcdedit /create %id1% /d "EasyUPE" /application osloader
bcdedit /set %id1% device ramdisk="[%SystemDrive%]\PEfile\10PEx64.wim",%id2%
bcdedit /set %id1% osdevice ramdisk="[%SystemDrive%]\PEfile\10PEx64.wim",%id2%
bcdedit /set %id1% path \Windows\system32\boot\winload.exe
bcdedit /set %id1% description "EasyUPE"
bcdedit /set %id1% locale zh-CN
bcdedit /set %id1% inherit {bootloadersettings}
bcdedit /set %id1% systemroot \windows
bcdedit /set %id1% detecthal Yes
bcdedit /set %id1% winpe Yes
bcdedit /set %id1% ems no
bcdedit /displayorder %id1% /addlast
bcdedit /bootsequence %id1%
bcdedit /timeout 3
shutdown -r -t 30
set Vbscript=Msgbox("■■■■■■■■■■程序执行完成■■■■■■■■■■"^&vbCrLf^&"将于30秒后自动重启并进入安装步骤"^&vbCrLf^&"点击【确定】将立即重启并进入安装步骤。"^&vbCrLf^&"点击【取消】仍可后续手动重启进入安装步骤。",1+4096," 提醒:")
for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a"
set ReturnValue1=确定
set ReturnValue2=取消或关闭窗口
if %MsHtaReturnValue% == 1 goto shutdown
if %MsHtaReturnValue% == 2 goto EXIT

:GPT
set id1={%time:~6,2%%time:~9,2%9ae2-251d-4c33-8124-178b578d628b}
set id2={%time:~6,2%%time:~9,2%a46a-0e56-4c0e-8fd2-2607b9363dd3}

游客,如果您要查看本帖隐藏内容请回复

bcdedit /set %id1% device ramdisk="[%SystemDrive%]\PEfile\10PEx64.wim",%id2%
bcdedit /set %id1% osdevice ramdisk="[%SystemDrive%]\PEfile\10PEx64.wim",%id2%
bcdedit /set %id1% path \Windows\system32\boot\winload.efi
bcdedit /set %id1% description "EasyUPE"
bcdedit /set %id1% locale zh-CN
bcdedit /set %id1% inherit {bootloadersettings}
bcdedit /set %id1% systemroot \windows
bcdedit /set %id1% detecthal Yes
bcdedit /set %id1% winpe Yes
bcdedit /set %id1% ems no
bcdedit /displayorder %id1% /addlast
bcdedit /bootsequence %id1%
bcdedit /timeout 3
shutdown -r -t 30
set Vbscript=Msgbox("■■■■■■■■■■程序执行完成■■■■■■■■■■"^&vbCrLf^&"将于30秒后自动重启并进入安装步骤"^&vbCrLf^&"点击【确定】将立即重启并进入安装步骤。"^&vbCrLf^&"点击【取消】仍可后续手动重启进入安装步骤。",1+4096," 提醒:")
for /f "Delims=" %%a in ('MsHta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)') do Set "MsHtaReturnValue=%%a"
set ReturnValue1=确定
set ReturnValue2=取消或关闭窗口
if %MsHtaReturnValue% == 1 goto shutdown
if %MsHtaReturnValue% == 2 goto EXIT

:EXIT
shutdown -a
exit

:shutdown
shutdown -a

shutdown -r -t 0
exit

下边打包好的批处理文件 仅包含批处理。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2活跃 +17 技术 +6 收起 理由
yinbinly + 5 666
magicgenius + 17 + 1 支持原创!

查看全部评分

最近访问 头像模式 列表模式
京少 发表于 2021-12-26 10:37:56 | 显示全部楼层

活跃 4359| 技术 0| 互助 0| 钻石 0

hashiqi  辛苦了
sud16 发表于 2021-12-26 10:50:58 | 显示全部楼层

活跃 30681| 技术 0| 互助 0| 钻石 0

谢谢分享
yy15675555 发表于 2021-12-26 11:44:44 | 显示全部楼层

活跃 27671| 技术 0| 互助 0| 钻石 0

看不懂的就不会用。看的懂的不如本地PE安装系统。当然楼主技术还是非常厉害的。
xzg680416 发表于 2021-12-26 12:33:54 | 显示全部楼层

活跃 14946| 技术 0| 互助 0| 钻石 200

学习了,谢谢分享。
dilbir 发表于 2021-12-26 12:54:17 | 显示全部楼层

活跃 15440| 技术 0| 互助 0| 钻石 100


学习了,谢谢分享。
地狱书生666 发表于 2021-12-26 13:11:04 | 显示全部楼层

活跃 40897| 技术 0| 互助 2| 钻石 442

虽然看不懂,但是还是很牛A和C之间,学习了, 感谢分享!
y283146775 发表于 2021-12-26 13:48:54 | 显示全部楼层

活跃 13038| 技术 15| 互助 22| 钻石 300

厉害啊,支持一波!
lu886yuan 发表于 2021-12-26 18:21:11 | 显示全部楼层

活跃 973| 技术 0| 互助 2| 钻石 50

来学学
大师呀
autorun.inf 发表于 2021-12-26 18:57:19 | 显示全部楼层

活跃 2793| 技术 0| 互助 3| 钻石 0

很不错,感谢楼主
magicgenius 发表于 2021-12-26 19:11:28 | 显示全部楼层

活跃 73794| 技术 170| 互助 173| 钻石 700

原创要支持!
magicgenius 发表于 2021-12-26 19:12:34 | 显示全部楼层

活跃 73794| 技术 170| 互助 173| 钻石 700

Netwoek?看着有点别扭。哈哈。

点评

哈哈哈,打错了嘿嘿。不过无关紧要 - -  详情 回复 发表于 2021-12-26 19:15
 楼主| hashiqi 发表于 2021-12-26 19:15:36 | 显示全部楼层

活跃 4934| 技术 19| 互助 10| 钻石 350

magicgenius 发表于 2021-12-26 19:12
Netwoek?看着有点别扭。哈哈。

哈哈哈,打错了嘿嘿。不过无关紧要 - -
alicee1 发表于 2021-12-26 20:38:56 | 显示全部楼层

活跃 7460| 技术 0| 互助 0| 钻石 50

感谢大佬无私分享
yinbinly 发表于 2021-12-26 21:28:04 | 显示全部楼层

活跃 79862| 技术 36| 互助 67| 钻石 2586


很不错,感谢楼主
IT天空
mrzhonghb 发表于 2021-12-26 22:49:20 | 显示全部楼层

活跃 754| 技术 0| 互助 2| 钻石 0

谢谢分享
luncer 发表于 2021-12-26 23:33:45 | 显示全部楼层

活跃 4604| 技术 0| 互助 0| 钻石 0

看看  最近新出的
python 发表于 2021-12-27 00:40:01 | 显示全部楼层

活跃 44124| 技术 1| 互助 2| 钻石 0

批处理都可以这样,有点复杂。
qiuhh001 发表于 2021-12-27 09:14:56 | 显示全部楼层

活跃 3600| 技术 0| 互助 0| 钻石 300

看得头疼,脑仁都疼。虽然我也是学计算机的,但是我没有正经的干过一天这个,专业变副业了。。。。。不过我知道楼主还是很牛X的。
svke 发表于 2021-12-27 15:54:51 | 显示全部楼层

活跃 1017| 技术 0| 互助 0| 钻石 0

这个只能说不得不服啊,兄弟你真牛
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

hashiqi

4934

活跃

19

技术

10

互助
签到任务
最火的业界新闻
  • 安卓阵营三大旗舰Soc齐了!一文了解Exynos
  • Intel EUV极紫外光刻设备进厂:冲刺“4nm”
  • NVIDIA新驱动解锁GPU隐藏技能:这下轻松了
  • 性能强悍!NVIDIA RTX 3070 Ti笔记本显卡跑
  • 手机里的“自适应显示刷新率“是什么?终于
  • 三星提前终止LCD 新一代屏幕来了!加速转型
  • 比Wi-Fi 6快2.4倍!联发科全球首秀Wi-Fi 7
  • 为Intel单独建3nm工厂?台积电回应合作问题
  • Intel 11代、12代酷睿放弃SGX支持 不能播放
  • 游戏性能大涨40% AMD的锐龙7 5800X3D处理器
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 不是…通常这种情况石头会蹦起来压你脸上
  • 顶级预判
  • 救命,真实哭了
  • 只在一念之间
  • 我也进入循环了
  • 这可太孝了
  • 是不是快到年的你
  • 防成龙
  • 绿巨人:你礼貌吗
  • 我就不沾水
关注官方微信
快速回复 返回顶部 返回列表