@Echo Off
mode con cols=65 lines=26
Set Prog=维护PE安装工具
Set L1= ╭──────────────────╮
Set L2= │ │
Set L3= ╭──┤ PE维护光盘安装工具 ├──╮
Set L4= │ │ │ │
Set L5= │ ╰──────────────────╯ │
Set L6= │ │
Set L7= ├────────────────────────┤
Set L8= │ 欢迎使用 │
Set L9= ╰────────────────────────╯
Title %Prog%
::初始化一些变量
Set PEFile=WINPE.IS_
Set SOFT=外置程序
Set PEIni=%SOFT%\WinPE.INI
Set LogFile=PEInstall.log
Set AddATTR=ATTRIB +S +H +R
Set DelATTR=ATTRIB -S -H -R
::核心文件=%PEFile%;外置程序位置=%SOFT%;外置配置文件=%PEIni%;日志文件名称=%LogFile%;
:CheckOS
if /i not "%os%."=="Windows_NT." goto SystemErro
::判断系统版本并设置TheOS
ver|find /i " 6.0">nul &&set Winver=vista&& set TheOS=Vista
ver|find /i " 5.0">nul &&set Winver=winnt&& set TheOS=2000
ver|find /i " 5.1">nul &&set Winver=winnt&& set TheOS=XP
ver|find /i " 5.2">nul &&set Winver=winnt&& set TheOS=2003
goto Start
:SystemErro
cls
Echo.
Echo.
Echo 注意:未经测试,本软件可能不适用于非 Windows PE/2000/XP/2003/Vista 操作系统。
Echo 按回车键退出安装程序
Pause >nul
Exit
::初始化完毕,开始加载界面
:Start
CLS
Title %Prog%——安装
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo │ 请选择安装方式: │
Echo %L6%
Echo │ [1] 普通安装/启动 (硬盘安装) │
Echo │ [2] 安装至U 盘(安装到移动硬盘有风险) │
Echo │ [Q] 退出安装 │
Echo %L6%
Echo %L7%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Echo 您现在使用的是 Windows %TheOS% 操作系统 !
if "%TheOS%"=="XP" Echo ( 或 Windows XP 核心的 WinPE )
if "%TheOS%"=="2003" Echo ( 或 Windows 2003 核心的 WinPE )
if "%TheOS%"=="Vista" Echo ( 请确保您拥有管理员权限以及关闭了UAC,否则安装可能失败 )
Echo.
Set Choice=
Set /P Choice= 请选择要进行的操作 (1/2/Q) ,按回车确认:
If "%Choice%"=="" Goto Start
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="1" Goto HD
If /I "%Choice%"=="2" Goto UD
If /I "%Choice%"=="Q" Exit
Goto Start
:HD
Set RP=
For %%I In (Z Y X W V U T S R Q P O N M L K J I H G F E D C) Do If Exist %%I:\BOOT.INI Set RP=%%I:
::设定PE安装文件夹的名称
Set PEDIR=%RP%\WINPEXP
::设定完毕
Set TargetP=硬盘&&Set TxtSp=
::判断是否安装了PE
If Exist %PEDIR% Goto Err1
FIND /I "%PEDIR%" %RP%\BOOT.INI>NUL 2>NUL
If "%Errorlevel%"=="0" Goto Err1
::选择不同的安装模式
If /i "%TheOS%"=="Vista" (
goto :Vista_Install
) Else (
goto :Pubilc_Install
)
Goto :HD
:UD
CLS
Title %Prog%——U 盘安装
For /F "skip=2 tokens=*" %%I In ('MYINS\CHECKUSB.EXE') DO SET Us=%%I
::这里的%Us%是U盘的盘符
If "%Us%"=="当前可移动磁盘分区:" Goto NoUD
Echo %Us%&&Echo.
If "%NoUD%"=="Yes" Echo 错误:您设定的分区 %RP% 不存在、写保护、未格式化或不是 U 盘分区,请按任意键重新设定。&&Echo.
Set /P RP=请选择您的 U 盘盘符(不需要冒号,例如 F):
Echo.&&Echo.
If "%RP%"=="" Goto UD
If Not "%RP%"=="" Set RP=%RP:~0,1%:
SET UU=%RP%
For /F %%I In ('MYINS\CHECKUSB.EXE %RP%') DO SET Err2=%%I
If Not "%Err2%"=="1" Set NoUD=Yes&&Goto UD
::上面这里测试了输入的U盘盘符是否存在或不是U盘分区或(未格式化)::未格式化这里不知道能不能检测出来,估计是下面的代码的工作,
Set TestFile=%RP%\MiniPETest_%RANDOM%.MT
Cd.>%TestFile%
If Not Exist %TestFile% Set NoUD=Yes&&Goto UD
Del %TestFile% /Q>NUL 2>NUL
::上面这里测试了U盘是否写保护或未格式化
Set U=U&&Set PEDIR=%RP%\WINPEXP
Set TargetP= U 盘&&Set TxtSp=
::那个Set U=U用来干什么的?
CLS
Echo 您选择的 U 盘分区为 %RP%,下面将对您的 U 盘进行格式化并写入引导
Echo 注意!:如果您选择的是硬盘硬盘,那么格式化的不是一个分区,而是整个移动硬盘。
ECHO.
Echo 请严格按照相关工具软件界面中的提示操作,以防出错。
Echo.
Echo 请在根目录SETUP下选择DOS基本文件。
Echo 使用格式化工具时,请勿勾选快速格式化,按任意键开始.......
PAUSE>NUL
start /wait MYINS\HPUSBFW.EXE
cls
Echo 正在复制文件请稍候....
echo.
%DelATTR% %RP%\COMMAND.COM&&Del %RP%\COMMAND.COM >NUL 2>NUL
%DelATTR% %RP%\IO.SYS&&Del %RP%\IO.SYS >NUL 2>NUL
If Not Exist %PEDIR% MD %PEDIR%
Copy ..\%PEFile% %PEDIR% /Y>NUL 2>NUL
XCOPY ..\%SOFT% /E %RP%\%SOFT%\ /Y /H /R>NUL 2>NUL
XCOPY BOOT /E %RP%\boot\ /Y /H /R>NUL 2>NUL
Copy MYINS\IO.SYS %RP%\ /y>NUL 2>NUL
%AddATTR% %RP%\IO.SYS /S /D
%AddATTR% %RP%\%SOFT% /S /D
%AddATTR% %PEDIR% /S /D
%AddATTR% %RP%\boot /S /D
Goto SUCCESS
:NoUD
CLS
Title %Prog%——U 盘安装
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo │ 您的计算机似乎没有安装 U 盘,您想怎么办? │
Echo %L6%
Echo │ 返回首页,重新选择安装选项。 │
Echo │ [Q] 退出安装 │
Echo %L6%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Set Choice=
Set /P Choice= 请选择要进行的操作 (B/Q) ,然后按回车:
If "%Choice%"=="" Goto NoUD
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="B" Goto Start
If /I "%Choice%"=="Q" Exit
Goto NoUD
Exit
:Err1
CLS
Title %Prog%——卸载
Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo │ 您的%TargetP%中好像已经安装了 WinPE,您想怎么办?%TxtSp% │
Echo %L6%
Echo │ [1] 卸载原有的 WinPE,并且重新安装。 │
Echo │ [2] 卸载原有的 WinPE,并且不再安装。 │
Echo │ 返回首页,重新选择安装选项。 │
Echo │ [Q] 退出安装 │
Echo %L6%
Echo %L7%
Echo %L8%
Echo %L9%
Echo.
Set Choice=
Set /P Choice= 请选择要进行的操作 (1/2/B/Q) ,然后按回车:
If "%TargetP%"=="硬盘" Set U=
If "%Choice%"=="" Goto Err1
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="1" Set Choi=1&&Goto UnInstall
If /I "%Choice%"=="2" Goto UnInstall
If /I "%Choice%"=="B" Goto Start
If /I "%Choice%"=="Q" Exit
Goto Err1
Exit
:UnInstall
If Exist %RP%\%LogFile% For /F "eol=; tokens=2 delims=^=" %%i In ('find /I ^"WinPE外挂位置^" %RP%\%LogFile%') do SET OPD=%%i
If Not "%U%"=="" Set OPD=%RP%
If Exist %RP%\%LogFile% %DelATTR% %RP%\%LogFile%&&Del %RP%\%LogFile% /Q>NUL 2>NUL
If Exist %RP%\PELDR %DelATTR% %RP%\PELDR&&Del %RP%\PELDR /Q>NUL 2>NUL
If Exist %PEDIR% RD %PEDIR% /S /Q>NUL 2>NUL
If Exist %RP%\boot\GRUB\grub RD %RP%\boot /S /Q>NUL 2>NUL
If Exist %OPD%\%SOFT% RD %OPD%\%SOFT% /S /Q>NUL 2>NUL
If Exist %UU%\IO.SYS %DelATTR% %UU%\IO.SYS&&Del %UU%\IO.SYS /Q>NUL 2>NUL
If Exist %RP%\WINNT.XPE %DelATTR% %RP%\WINNT.XPE&&Del %RP%\WINNT.XPE /Q>NUL 2>NUL
If /i "%TheOS%"=="Vista" If Exist %RP%\NTDETECT.COM %DelATTR% %RP%\NTDETECT.COM&&Del %RP%\NTDETECT.COM /Q>NUL 2>NUL
If /i "%TheOS%"=="Vista" If Exist %RP%\BOOTFONT.BIN %DelATTR% %RP%\BOOTFONT.BIN&&Del %RP%\BOOTFONT.BIN /Q>NUL 2>NUL
::针对VISTA下是否多系统的判断卸载
If NOT Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.INI&&Del %RP%\BOOT.INI
%DelATTR% %RP%\BOOT.INI>NUL 2>NUL
If Exist %RP%\BOOT.BAK (
%DelATTR% %RP%\BOOT.BAK
TYPE %RP%\BOOT.BAK|FIND /I /V "%PEDIR%">%RP%\BOOT.INI
) Else (
If Exist %RP%\BOOT.INI Copy %RP%\BOOT.INI %RP%\BOOT.BAK /Y>NUL 2>NUL
If Exist %RP%\BOOT.BAK TYPE %RP%\BOOT.BAK|FIND /I /V "%PEDIR%">%RP%\BOOT.INI
)
If Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.BAK&&Del %RP%\BOOT.BAK>NUL 2>NUL
If Exist %RP%\BOOT.INI %AddATTR% %RP%\BOOT.INI >NUL 2>NUL
Set RP=
Title %Prog%——卸载完成
If "%Choi%"=="1" (Echo.&&Echo.&&Echo 卸载完成,请按任意键准备安装 。。。&&PAUSE>NUL 2>NUL&&Goto Start)
Echo.&&Echo.&&Echo 卸载完成,请按任意键退出 。。。
PAUSE>NUL 2>NUL
Exit
:Vista_Install
For %%I In (Z Y X W V U T S R Q P O N M L K J I H G F E D C) Do If Exist %%I:\BOOTMGR Set RP=%%I:
Set PEDIR=%RP%\WINPEXP
set gname=WinPE MINI SYSTEM
set gname2=WINPEXP\AVLDR
If Exist %PEDIR% Goto Err1
If "%OP%"=="" Call :SetExtra
Set TargetP=硬盘 && Set TxtSp=
If Not Exist %PEDIR% MD %PEDIR%>NUL 2>NUL
If Exist %RP%\WINNT.XPE %DelATTR% %RP%\WINNT.XPE
Echo 正在复制文件,请稍候 ............
COPY MYINS\PELDR %RP%\PELDR >Nul 2>Nul
COPY MYINS\AVLDR %PEDIR%\AVLDR >Nul 2>Nul
COPY MYINS\WINNT.XPE %RP%\WINNT.XPE >Nul 2>Nul
COPY MYINS\NTDETECT.COM %RP%\NTDETECT.COM >Nul 2>Nul
COPY ..\BOOTFONT.BIN %RP%\BOOTFONT.BIN
%AddATTR% %RP%\BOOTFONT.BIN
%AddATTR% %RP%\NTDETECT.COM /S /D
Call :CopyAndSetFiles
Goto SUCCESS
:Pubilc_Install
Title %Prog%——普通安装
If "%OP%"=="" Call :SetExtra
If Not Exist %PEDIR% MD %PEDIR%>NUL 2>NUL
Echo 正在复制文件,请稍候 ............
::拷贝必要的引导文件
COPY MYINS\AVLDR %PEDIR%\AVLDR >Nul 2>Nul
COPY MYINS\PELDR %RP%\PELDR >Nul 2>Nul
COPY MYINS\WINNT.XPE %RP%\WINNT.XPE >Nul 2>Nul
Call :CopyAndSetFiles
Goto SUCCESS
:CopyAndSetFiles
::拷贝PE的核心
Copy ..\%PEFile% %PEDIR% /Y>NUL 2>NUL
::拷贝外置程序
IF NOT "%OP%"=="" XCOPY ..\%SOFT% /E %OP%\%SOFT%\ /Y /H /R>NUL 2>NUL
::修改启动菜单
If "%U%"=="" If Exist %RP%\BOOT.INI %DelATTR% %RP%\BOOT.INI
If "%U%"=="" If Exist %RP%\BOOT.INI If Exist %RP%\BOOT.BAK %DelATTR% %RP%\BOOT.BAK
If "%U%"=="" If Exist %RP%\BOOT.INI Copy %RP%\BOOT.INI %RP%\BOOT.BAK>NUL 2>NUL
If "%U%"=="" If Exist %RP%\BOOT.INI TYPE %RP%\BOOT.BAK|FIND /I /V "%RP%\WINPEXP">%RP%\BOOT.INI
If "%U%"=="" If Exist %RP%\BOOT.INI Echo %RP%\WINPEXP\AVLDR="WinPE MINI SYSTEM">>%RP%\BOOT.INI
if /i "%TheOS%"=="Vista" If NOT Exist %RP%\BOOT.INI CALL :BOOT
::添加属性
IF NOT "%OP%"=="" %AddATTR% %OP%\%SOFT% /S /D
If Exist %RP%\BOOT.INI %AddATTR% %RP%\BOOT.INI /S /D
If Exist %RP%\PELDR %AddATTR% %RP%\PELDR /S /D
%AddATTR% %PEDIR% /S /D
::添加日志方便卸载
If "%U%"=="" Call :添加日志
Goto :EOF
:SUCCESS
If "%U%"=="" IF NOT EXIST %RP%\BOOT.INI GOTO SETUPErr
Title %Prog%——安装完成
CLS
For %%i In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do If /I "%RP%"=="%%i:" Set RP=%%i:
Echo 已经成功将镜像 %PEFile% 安装到您的 %RP% 盘。
If "%U%"=="" (
Echo 外置程序 文件夹按照您的设置,复制到了 %OP% 盘。
Echo.
If Exist %RP%\Boot.INI Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK,多系统同上。
)
Echo.&&Echo.
Echo 如果您需要将 WinPE 卸载,请重新运行本安装程序。
Echo.
Echo 请按任意键退出......
PAUSE>NUL 2>NUL
Exit
:SetExtra
CLS
If "%NoOP%"=="Yes" Echo 错误:您设定的分区不存在或写保护,请按任意键重新设定。&&Echo.
Set /P OP=请设定 外置程序 存放的分区符[不需要冒号,例如 D(推荐)]:
Echo.&&Echo.
If "%OP%"=="" Goto SetExtra
If Not "%OP%"=="" Set OP=%OP:~0,1%:
Set TestFile=%OP%\MaotaoTest.MT
Cd.>%TestFile%
If Not Exist %TestFile% Set NoOP=Yes&&Goto SetExtra
Del %TestFile% /Q>NUL 2>NUL
Goto :EOF
:添加日志
>%RP%\%LogFile% Cd.
>>%RP%\%LogFile% Echo ;此文件为 WinPE 的安装LogFile,请不要随意删除
>>%RP%\%LogFile% Echo ;否则可能会造成 WinPE 的卸载不够彻底!!!
>>%RP%\%LogFile% Echo.
>>%RP%\%LogFile% Echo WinPE镜像文件=%PEFile%
>>%RP%\%LogFile% Echo WinPE外挂位置=%OP%
>>%RP%\%LogFile% Echo WinPE安装日期=%Date% %Time%
%AddATTR% %RP%\%LogFile%
Goto :EOF
:BOOT
ECHO [boot loader]>>%RP%\BOOT.INI
ECHO [operating systems]>>%RP%\BOOT.INI
ECHO %RP%\%gname2%="%gname%">>%RP%\BOOT.INI
goto :eof
:SETUPErr
echo 安装到硬盘可能失败。请检查%RP%上的BOOT.INI文件中是否有PE的启动项,按任意键退出..........
pause >nul