set /p OpDriver=请问是否封装硬件驱动?是输入小写y,不是,随便输个!----
set /p OpPackage=请问是否封装系统补丁?是输入小写y,不是,随便输个!----
set /p bIsWin8Wim=请问映像是Win8吗?输入y,如果是Win7并且要关闭功能和封装IE10,输入n----
if !bIsWin8Wim!==n goto ForWin7
set /p bEnableFeature8=映像是Win8,请问是否开启.Net3.5/2支持?是y,不n----
if !bEnableFeature8!==n goto ForWin7
set /p Letter=程序暂停,开启.Net3.5/2支持,请装载Win8原版ISO,并准确输入盘符----
:ForWin7
if not exist %~dp0mount goto md
:rd_Mount
dir %~dp0mount /ad /b /s >%~dp0del_rd.txt
for /f "usebackq delims=" %%i in (%~dp0del_rd.txt) do ((takeown /f "%%i" /r /d y >%~dp0del_log.txt>nul
::准备部分全局变量
set /a a=0
dir %~dp0*.wim /b /s >%~dp0fbackup.txt
cls
echo 查找到%~dp0目录下所有映像文件如下表
echo -----------------------------------------------------
for /f "usebackq delims=" %%i in (%~dp0fbackup.txt) do (
set /a a+=1
echo 系统映像:!a! %%i)
if !a!==0 (
echo 无系统映像文件,直接退出
goto End)
echo -----------------------------------------------------
:SourceWimInput
set /p ChoiceWim=请输入要封装系统序号,只有序号有效,输完请按回车----
for /l %%i in (1,1,!a!) do (
if !ChoiceWim!==%%i (goto ValidSourceInput)
)
echo 这么简单的选择题都会错,输入数字1-!a!有这么难吗,请重新输入
echo -----------------------------------------------------
goto SourceWimInput
:ValidSourceInput
echo 你选择的是第!ChoiceWim!个系统映像文件,马上下一步
set /a a=0
set fileWim=Null
for /f "usebackq delims=" %%i in (%~dp0fbackup.txt) do (
set /a a+=1
if !a!==!ChoiceWim! (
set fileWim=%%i
echo !fileWim!)
)
dism /get-wiminfo /wimfile:!fileWim!
echo 1、下面要输入安装系统的索引号,可以向上滚动显示刚才映像文件信息.
echo 2、只有数字有效,输完请按回车,其它任意键退出
set /p Index=3、请输入要封装系统的索引号----
if not !OpDriver!==y goto AddPackages
dir %~dp0Driver /d /b >%~dp0pbackup.txt
cls
set /a a=0
echo 查找到%~dp0Driver目录下所有子目录如下表
for /f "usebackq delims=" %%i in (%~dp0pbackup.txt) do (
set /a a+=1
echo 系统驱动目录:!a! %%i)
if !a!==0 (
echo 无无任何驱动目录,尝试进行补丁封装
goto AddPackages)
:DriverInput
set /p ChoicePath=请输入要封装驱动目录,只有序号有效,输完请按回车----
for /l %%i in (1,1,!a!) do (
if !ChoicePath!==%%i (
goto ValidDriverInput)
)
echo 这么简单的选择题都会错,输入数字1-!a!有这么难吗,请重新输入
echo -----------------------------------------------------
goto DriverInput
:ValidDriverInput
echo 你选择的是第!ChoicePath!个驱动目录,稍候封装
set /a a=0
::nameDriver这个变量仅仅是完整目录的一部分
set nameDriver=Null
for /f "usebackq delims=" %%i in (%~dp0pbackup.txt) do (
set /a a+=1
if !a!==!ChoicePath! (
set nameDriver=%%i
echo !nameDriver!)
)
:AddPackages
if not !OpPackage!==y goto StartDism
dir %~dp0patch /d /b >%~dp0pbackup.txt
set /a a=0
echo 查找到%~dp0patch目录下所有子目录如下表,仅查子目录
for /f "usebackq delims=" %%i in (%~dp0pbackup.txt) do (
set /a a+=1
echo 系统补丁目录:!a! %%i)
if !a!==0 (
echo 无任何补丁目录,直接退出
goto End)
:PackageInput
set /p ChoicePath=请输入要封装补丁目录,只有序号有效,输完请按回车
for /l %%i in (1,1,!a!) do (
if !ChoicePath!==%%i (
goto ValidPackageInput)
)
echo 这么简单的选择题都会错,输入数字1-!a!有这么难吗,请重新输入
echo -----------------------------------------------------
goto PackageInput
:ValidPackageInput
echo 你选择的是第!ChoicePath!个补丁目录,马上开始封装
set /a a=0
::namePatch这个变量仅仅是完整目录的一部分
set namePatch=Null
for /f "usebackq delims=" %%i in (%~dp0pbackup.txt) do (
set /a a+=1
if !a!==!ChoicePath! (
set namePatch=%%i
echo !namePatch!)
)
::注意此时fbackup.txt文件内容是所有补丁的带完整目录的文件名。
dir %~dp0!namePatch! /b /s >%~dp0\fbackup.txt