电竞比分网-中国电竞赛事及体育赛事平台

分享

UEFI+GPT分區(qū)、引導(dǎo)修復(fù)、安裝備份、映像集成整理與定制封裝工具包

 力士書(shū)館 2014-04-27
 接著1樓

if !OpChoice!==11 (

echo list disk>%temp%\DiskPart.txt
diskpart /s %temp%\DiskPart.txt

set /a CountDisk=0
set /a CountPart=0
set    NumDisk=0
set    bVldNum=n
set    NumVol=0

set /a a=0
set /a CountWim=0
set /a NumWimSource=0
set /a NumDskG=0
set /a NumPart=0
set    bBK=y

echo list disk>%temp%\DiskPart.txt
diskpart /s %temp%\DiskPart.txt>%temp%\Out_DiskPart.txt

find /i "磁盤(pán)" %temp%\Out_DiskPart.txt>%temp%\Out_tmp.txt
for /f "skip=2 tokens=2 delims= " %%i in (%temp%\Out_tmp.txt) do (set /a CountDisk=%%i)

for /l %%i in (1,1,5) do (
   if !bVldNum!==n (set /p  NumDisk=請(qǐng)輸入要安裝或備份系統(tǒng)的目標(biāo)磁盤(pán)編號(hào),從0起編,默認(rèn)第0塊磁盤(pán)----)
   for /l %%j in (0,1,!CountDisk!) do (
      if !NumDisk!==%%j set bVldNum=y
   )
)
if !bVldNum!==n (echo 磁盤(pán)編號(hào)5次都輸錯(cuò),算了退出吧!&&exit)

::Ghost認(rèn)為磁盤(pán)從1開(kāi)始起編!
set /a NumDskG=!NumDisk!+1

set /p bBK=請(qǐng)問(wèn)是進(jìn)行備份嗎,如恢復(fù)輸入n,默認(rèn)是備份y,直接回車(chē)----

echo select disk !NumDisk!>%temp%\DiskPart.txt
echo list part>>%temp%\DiskPart.txt
diskpart /s %temp%\DiskPart.txt
::準(zhǔn)備指定安裝或備份分區(qū)
set /p NumPart=你選擇在磁盤(pán)^<!NumDisk!^>上安裝或備份系統(tǒng),請(qǐng)輸入分區(qū)序號(hào)----

if !bBK!==y (

   echo list vol>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   set bHvLabSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLabSr!==n (
         set /p LabelSr=請(qǐng)輸入系統(tǒng)備份gho文件的放置盤(pán)符,直接回車(chē)----
         if not exist !LabelSr!: echo 你輸入的盤(pán)符是什么東西,根本不存在嗎?
         if     exist !LabelSr!: set bHvLabSr=y
      )
   )
   if not exist !LabelSr!:\backup md !LabelSr!:\backup
   set    NameBack=bk_Mby
   set /p NameBack=請(qǐng)輸入要備份文件名字,默認(rèn)名字bk_Mby,直接回車(chē)----
   %~dp0ghost -clone,mode=pdump,src=!NumDskG!:!NumPart!,dst=!LabelSr!:\backup\!NameBack!.gho /z9 /sure
   goto End
)

if not !bBK!==y (
   echo list vol>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   ::指定要安裝分區(qū),請(qǐng)看卷標(biāo)信息。
   set bHvSYS=n
   for /l %%i in (1,1,5) do (
      if !bHvSYS!==n (
         set /p LabSYS=請(qǐng)輸入要安裝系統(tǒng)分區(qū)盤(pán)符,就是那個(gè)序號(hào)對(duì)應(yīng)的盤(pán)符,然后回車(chē)----
         if not exist !LabSYS!: echo 你輸入的盤(pán)符是什么東西,根本不存在嗎?
         if     exist !LabSYS!: set bHvSYS=y
      )
   )

   ::指定EFI/MSR分區(qū)盤(pán)符,請(qǐng)看卷標(biāo)信息。
   set bHvSYS=n
   for /l %%i in (1,1,5) do (
      if !bHvSYS!==n (
         set /p Label_ESP=請(qǐng)輸入EFI/MSR分區(qū)盤(pán)符,不帶冒號(hào),然后回車(chē)----
         if not exist !Label_ESP!: echo 你輸入的盤(pán)符是什么東西,根本不存在嗎?
         if     exist !Label_ESP!: set bHvSYS=y
      )
   )

   set    bNdCpyFil=n
   set /p bNdCpyFil=請(qǐng)問(wèn)需要從U盤(pán)復(fù)制gho文件嗎,如需要輸入y,默認(rèn)不要n,直接回車(chē)----
   if !bNdCpyFil!==y (
      ::現(xiàn)在準(zhǔn)備把系統(tǒng)備份gho文件復(fù)制到本地卷中,請(qǐng)看卷標(biāo)信息。
      ::指定系統(tǒng)備份gho文件文件本地磁盤(pán)放置分區(qū)。
      set bHvLabSr=n
      for /l %%i in (1,1,5) do (
         if !bHvLabSr!==n (
            set /p LabelSr=請(qǐng)輸入要放置系統(tǒng)備份gho文件的盤(pán)符,直接回車(chē)----
            if not exist !LabelSr!: echo 你輸入的盤(pán)符是什么東西,根本不存在嗎?
            if     exist !LabelSr!: set bHvLabSr=y
         )
      )
      if not exist !LabelSr!:\backup md !LabelSr!:\backup

      ::準(zhǔn)備源系統(tǒng)備份gho文件與索引序號(hào)。
      set bHvLSr=n
      for /l %%i in (1,1,5) do (
         if !bHvLSr!==n (
            set /p LPartU=請(qǐng)輸入系統(tǒng)備份gho文件所在U盤(pán)盤(pán)符,不帶冒號(hào)----
            if not exist !LPartU!: echo 這個(gè)盤(pán)符根本就沒(méi)有使用了,你不要搞笑好吧
            if     exist !LPartU!: set bHvLSr=y
         )
      )

      dir !LPartU!:\*.gho /b /s >%temp%\fSeek.txt
      echo 查找到!LPartU!分區(qū)下所有g(shù)ho文件如下表
      echo -----------------------------------------------------
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)備份:!a! %%i)
      set /a CountWim=!a!
      if !a!==0   echo 該分區(qū)無(wú)系統(tǒng)備份文件,退出重來(lái)吧!&&goto End

      set /p NumWimSource=請(qǐng)輸入gho文件序號(hào),我不檢測(cè)無(wú)效序號(hào),不帶冒號(hào)----
      set bVldNSr=n
      for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
      if !bVldNSr!==n echo 你沒(méi)有輸入有效gho文件序號(hào),退出重來(lái)吧!&&goto End

      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
         set /a a+=1
         if !NumWimSource!==!a! copy %%i !LabelSr!:\backup\
      )

      echo gho文件已拷貝到本地磁盤(pán),程序暫停,U盤(pán)可以拔出它用,然后繼續(xù)。
      pause

      dir !LabelSr!:\*.gho /b /s >%temp%\fSeek.txt
      echo 查找到!LabelSr!分區(qū)下所有g(shù)ho文件如下表
      echo -----------------------------------------------------
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)gho:!a! %%i)
      set /a CountWim=!a!

      set /p NumWimSource=請(qǐng)輸入系統(tǒng)gho文件序號(hào),我不檢測(cè)無(wú)效序號(hào),不帶冒號(hào)----
      set bVldNSr=n
      for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
      if !bVldNSr!==n echo 你沒(méi)有輸入有效系統(tǒng)gho文件序號(hào),退出重來(lái)吧!&&goto End

      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
         set /a a+=1
         if !NumWimSource!==!a! ( %~dp0ghost -clone,mode=pload,src=%%i:1,dst=!NumDskG!:!NumPart! /sure )
      )
   )
   if not !bNdCpyFil!==y (
      set bHvLabSr=n
      for /l %%i in (1,1,5) do (
         if !bHvLabSr!==n (
            set /p LabelSr=請(qǐng)輸入有系統(tǒng)備份gho文件的盤(pán)符,直接回車(chē)----
            if not exist !LabelSr!: echo 你輸入的盤(pán)符是什么東西,根本不存在嗎?
            if     exist !LabelSr!: set bHvLabSr=y
         )
      )

      dir !LabelSr!:\*.gho /b /s >%temp%\fSeek.txt
      echo 查找到!LabelSr!分區(qū)下所有g(shù)ho文件如下表
      echo -----------------------------------------------------
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)gho:!a! %%i)
      set /a CountWim=!a!

      set /p NumWimSource=請(qǐng)輸入系統(tǒng)gho文件序號(hào),我不檢測(cè)無(wú)效序號(hào),不帶冒號(hào)----
      set bVldNSr=n
      for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
      if !bVldNSr!==n echo 你沒(méi)有輸入有效系統(tǒng)gho文件序號(hào),退出重來(lái)吧!&&goto End

      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
         set /a a+=1
         if !NumWimSource!==!a! ( %~dp0ghost -clone,mode=pload,src=%%i:1,dst=!NumDskG!:!NumPart! /sure )
      )
   )
   if !bPart_GPT!==y %windir%\system32\bcdboot !LabSYS!:\windows /s !Label_ESP!: /f uefi /l zh-cn
   if not !bPart_GPT!==y (
     if     exist !LabSYS!:\ntldr  %windir%\system32\bootsect.exe /nt52 !Label_ESP!: /force /mbr
     if not exist !LabSYS!:\ntldr  %windir%\system32\bootsect.exe /nt60 !Label_ESP!: /force /mbr&&%windir%\system32\bcdboot !Label_SYS!:\windows /s !Label_ESP!: /f bios /l zh-cn
   )
)
   goto End
)

if !OpChoice!==12 (

set    bVldNum=n
set    NumVol=0
set /a a=0
set    NumSdi=1
set /a CountWim=0
set    NumWimSource=1

set    bHvFilePE=n

echo ------------------------------------------------------------------------------
echo.
echo 將PE安裝在EFI分區(qū)或者M(jìn)SR分區(qū)內(nèi),防止PE受損,沒(méi)有這種分區(qū)你就老外了。
echo.
echo ------------------------------------------------------------------------------
echo PE放于指定盤(pán)根目錄下WinPE文件夾,設(shè)備文件Boot.sdi和啟動(dòng)文件Boot.wim也固定。

set    bIsUEFI=y
set /p bIsUEFI=請(qǐng)問(wèn)BIOS是否UEFI,默認(rèn)是,不是請(qǐng)輸入小寫(xiě)n----

set bHvLab=n
set /p bHvLab=采用MBR但無(wú)MSR,或者M(jìn)BR中MSR分區(qū)/ESP分區(qū)如已有盤(pán)符,輸入y,其余直接回車(chē)----
if  !bHvLab!==y (
   set /p LabelEFI=請(qǐng)輸入ESP分區(qū)或MBR中MSR分區(qū)盤(pán)符或者M(jìn)BR無(wú)MSR分區(qū)時(shí)的系統(tǒng)盤(pán)符----
)
if  not !bHvLab!==y (
   ::給EFI或者M(jìn)SR分區(qū)分配盤(pán)符
   set bHvSetESP=n
   for %%i in (z y x w v u t s r q p o n m) do (
      if !bHvSetESP!==n ( if  not exist %%i: set LabelEFI=%%i&&set bHvSetESP=y )
   )
   echo list vol>%temp%\DiskPart.txt
   echo exit>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   set /p NumVolESP=請(qǐng)輸入GPT中ESP分區(qū)或MBR中MSR分區(qū)的卷編號(hào),直接回車(chē)----
   echo select vol !NumVolESP!>%temp%\DiskPart.txt
   echo assign letter=!LabelEFI!>>%temp%\DiskPart.txt
   echo exit>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
)


::UEFI引導(dǎo)需要PE源盤(pán)安裝硬盤(pán)PE,默認(rèn)需要本PE源盤(pán),MBR引導(dǎo),默認(rèn)也要
set     bCopyPE=y
set /p  bCopyPE=請(qǐng)問(wèn)是否需要復(fù)制PE文件,默認(rèn)需要,不需要輸入小寫(xiě)n----

if not !bCopyPE!==n (

   set    name_PE=PE_MBY
   set /p name_PE=默認(rèn)安裝PE于!LabelEFI!:\PE_MBY目錄,也可輸入目錄名字,如PE_WYS----

   if not exist !LabelEFI!:\!name_PE!\  md !LabelEFI!:\!name_PE!\

   set name_PathSdi=!name_PE!
   set name_PathWim=!name_PE!

   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartU=請(qǐng)輸入PE源文件所在盤(pán)盤(pán)符,可以是本地硬盤(pán),不帶冒號(hào)----
         if not exist !LPartU!: echo 這個(gè)盤(pán)符根本就沒(méi)有使用了,你不要搞笑好吧
         if     exist !LPartU!: set bHvLSr=y
      )
   )
   echo.
   dir !LPartU!:\*.sdi /b /s >%temp%\fdSeek.txt
   echo 查找到!LPartU!分區(qū)下所有映像引導(dǎo)文件*.sdi如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)引導(dǎo)文件:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)PE系統(tǒng)映像引導(dǎo)文件,退出重來(lái)吧!&&goto End
   echo -----------------------------------------------------
   set /p NumSdi=請(qǐng)輸入系統(tǒng)映像引導(dǎo)文件序號(hào),我不檢測(cè)無(wú)效序號(hào),默認(rèn)1----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumSdi!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效PE系統(tǒng)映像文件序號(hào),退出重來(lái)吧!&&goto End

   echo.
   dir !LPartU!:\*.wim /b /s >%temp%\fwSeek.txt
   echo 查找到!LPartU!分區(qū)下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do ( set /a a+=1&&echo PE系統(tǒng)映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)PE系統(tǒng)映像文件,退出重來(lái)吧!&&goto End
   echo -----------------------------------------------------
   set /p NumWimSource=請(qǐng)輸入PE系統(tǒng)映像文件序號(hào),我不檢測(cè)無(wú)效序號(hào),默認(rèn)1----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效PE系統(tǒng)映像文件序號(hào),退出重來(lái)吧!&&goto End

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do (
     set /a a+=1
     if !a!==!NumSdi! copy /y %%i !LabelEFI!:\!name_PE!\boot.sdi
   )

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do (
     set /a a+=1
     if !a!==!NumWimSource! copy /y %%i !LabelEFI!:\!name_PE!\boot.wim
   )

)

if   !bIsUEFI!==n (
   set     bCopyBoot=n
   set /p  bCopyBoot=是否需要從PE源盤(pán)復(fù)制MBR啟動(dòng)環(huán)境文件,默認(rèn)不,需要輸入小寫(xiě)y----

   if not !bCopyBoot!==n (

      
      set bHvLSr=n
      for /l %%i in (1,1,5) do (
         if !bHvLSr!==n (
            set /p LPartPE=請(qǐng)輸入PE源盤(pán)盤(pán)符,然后回車(chē)----
            if not exist !LPartPE!: echo 這個(gè)盤(pán)符根本就沒(méi)有使用了,你不要搞笑好吧
            if     exist !LPartPE!: set bHvLSr=y
         )
      )

      if not exist !LPartPE!:\boot\ ( echo 這個(gè)盤(pán)里沒(méi)有啟動(dòng)環(huán)境文件,你不要搞笑好吧!&& goto End )
      xcopy /h /y   !LPartPE!:\bootmgr   !LabelEFI!:\
      if     exist !LabelEFI!:\boot\  rd /s /q  !LabelEFI!:\boot\
      if not exist !LabelEFI!:\boot\  md !LabelEFI!:\boot\
      robocopy  !LPartPE!:\boot\     !LabelEFI!:\boot\  /e /xf bcd
   )
)

set     bbPE=y
set /p  bbPE=請(qǐng)問(wèn)是否建PE菜單項(xiàng),默認(rèn)建,如果不建輸入小寫(xiě)n----

if not !bbPE!==n (

   if  !bCopyPE!==n (
   ::沒(méi)有復(fù)制源文件,說(shuō)明ESP/MSR分區(qū)中已經(jīng)存在PE源文件,查找相應(yīng)路徑
   echo.
   dir !LabelEFI!:\*.sdi /b /s >%temp%\fdSeek.txt
   echo 查找到!LabelEFI!分區(qū)下所有映像引導(dǎo)文件*.sdi如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)引導(dǎo)文件:!a! %%i )
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)PE系統(tǒng)映像引導(dǎo)文件,退出重來(lái)吧!&&goto End
   echo -----------------------------------------------------
   set /p NumSdi=請(qǐng)輸入系統(tǒng)映像引導(dǎo)文件序號(hào),我不檢測(cè)無(wú)效序號(hào),默認(rèn)1----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumSdi!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效PE系統(tǒng)映像文件序號(hào),退出重來(lái)吧!&&goto End

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do (
      set /a a+=1
      if !a!==!NumSdi! (
         set namePathSdi=%%i
         set name_PathSdi=!namePathSdi:~3,-9!
      )
   )
   echo 引導(dǎo)文件路徑是:!name_PathSdi!
   set /p name_PathSdi=如果路徑有誤,請(qǐng)手工輸入,默認(rèn)不需要,直接回車(chē)----

   echo.
   dir !LabelEFI!:\*.wim /b /s >%temp%\fwSeek.txt
   echo 查找到!LabelEFI!分區(qū)下所有PE映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do ( set /a a+=1&&echo PE系統(tǒng)映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)PE系統(tǒng)映像文件,退出重來(lái)吧!&&goto End
   echo -----------------------------------------------------
   set /p NumWimSource=請(qǐng)輸入PE系統(tǒng)映像文件序號(hào),我不檢測(cè)無(wú)效序號(hào),默認(rèn)1----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效PE系統(tǒng)映像文件序號(hào),退出重來(lái)吧!&&goto End

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do (
      set /a a+=1
      if !a!==!NumWimSource! (
         set namePathWim=%%i
         set name_PathWim=!namePathWim:~3,-9!
      )
   )

   echo PE系統(tǒng)文件路徑是:!name_PathWim!
   set /p name_PathWim=如果路徑有誤,請(qǐng)手工輸入,默認(rèn)不需要,直接回車(chē)----

   )

set    name_MenuPE=PE_MBY
set /p name_MenuPE=輸入菜單項(xiàng)名字,默認(rèn)PE_MBY,可自行輸入,如MAXDOS_WYS----



   echo list vol>%temp%\DiskPart.txt
   echo exit>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   set /p NumVolESP=請(qǐng)輸入GPT中ESP分區(qū)或MBR中MSR分區(qū)的卷編號(hào),直接回車(chē)----
   bcdedit /create {bootmgr} /d "Marc Boot Manager" >nul 2>nul
   bcdedit /set {bootmgr} device partition=\device\harddiskvolume!NumVolESP! >nul 2>nul


::創(chuàng)建設(shè)備項(xiàng)
bcdedit  /create /d "!name_MenuPE!" /device>%~dp0fdid.txt
::取得所生成的設(shè)備標(biāo)識(shí)符
for /f "tokens=2 delims= "  %%i in (%~dp0fdid.txt) do (set fdid=%%i)
::設(shè)置設(shè)備所在分區(qū)
bcdedit  /set !fdid! ramdisksdidevice partition=!LabelEFI!:
::設(shè)置設(shè)備所在的固定路徑
bcdedit  /set !fdid! ramdisksdipath \!name_PathSdi!\boot.sdi
::創(chuàng)建菜單項(xiàng)
bcdedit  /create /d "!name_MenuPE!" /application osloader>%~dp0fmid.txt
::取得所生成的菜單標(biāo)識(shí)符
for /f "tokens=2 delims= "  %%i in (%~dp0fmid.txt) do (set fmid=%%i)
::設(shè)置啟動(dòng)設(shè)備
bcdedit  /set !fmid! device ramdisk=[!LabelEFI!:]\!name_PathWim!\boot.wim,!fdid!
::設(shè)置系統(tǒng)設(shè)備
bcdedit  /set !fmid! osdevice ramdisk=[!LabelEFI!:]\!name_PathWim!\boot.wim,!fdid!
::設(shè)定啟動(dòng)程序(winload)的路徑
if not !bIsUEFI!==n bcdedit  /set !fmid! path \windows\system32\winload.efi
if     !bIsUEFI!==n bcdedit  /set !fmid! path \windows\system32\winload.exe
::設(shè)置系統(tǒng)根目錄
bcdedit  /set !fmid! systemroot \windows
::開(kāi)啟detecthal支持
bcdedit  /set !fmid! detecthal yes
::開(kāi)啟WinPE支持
bcdedit  /set !fmid! winpe yes
::設(shè)置nx為optin
bcdedit  /set !fmid! nx optin
::設(shè)置為最后一項(xiàng)顯示
bcdedit  /displayorder !fmid! /addlast

bcdedit  /timeout 2
bcdedit  /enum

)


del /f  /s /q %~dp0fdid.txt>nul 2>nul
del /f  /s /q %~dp0fmid.txt>nul 2>nul


   goto End
)
if !OpChoice!==13 (
   echo.
   echo 1:本批處理、驅(qū)動(dòng)和補(bǔ)丁子目錄、IE升級(jí)包必需都在當(dāng)前目錄。
   echo    在同目錄中有\(zhòng)Driver、\patch和\IE固定目錄,放置驅(qū)動(dòng)和補(bǔ)丁子目錄。
   echo    如\Driver\Drv_Win8_x64,\patch\patch_Win8_x64
   echo    調(diào)整Win7、Win8功能,可能還要準(zhǔn)備Win8原版光盤(pán),或者IE10安裝包。
   echo.
   echo 2:當(dāng)前目錄下工作子目錄,掛載文件夾\Mount,臨時(shí)文件夾\tmp_Imgex。
   echo    臨時(shí)文件*.txt都在系統(tǒng)臨時(shí)文件夾%temp%中。
   echo.
   pause
   ::準(zhǔn)備全局變量
   set /a a=0
   set /a CountWim=0
   set /a CountIndex=0
   set /a NumWimSource=0
   set /a IndexSource=0

   ::準(zhǔn)備局部變量
   set /a CountPatch=0
   set /a NumPatch=0
   set /a CountDrv=0
   set /a NumDrv=0
   set /a CountIE=0
   set /a NumIE=0
   cls
   echo.
   set    bPatDism=y
   set /p bPatDism=請(qǐng)問(wèn)是否封裝系統(tǒng)補(bǔ)???默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----
   set    bDrvDism=y
   set /p bDrvDism=請(qǐng)問(wèn)是否封裝硬件驅(qū)動(dòng)?默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----
   set    bIsWin8=y
   set /p bIsWin8=請(qǐng)問(wèn)是要操作Win8映像嗎?默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----

   if not !bIsWin8!==n (
      set    bEnabNet3=y
      set /p bEnabNet3=請(qǐng)問(wèn)是否啟用 .Net 3.5/2支持?默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----
      if not !bEnabNet3!==n (
         set /p LabelISO=請(qǐng)插入光盤(pán)或者裝載ISO,并準(zhǔn)確輸入盤(pán)符!----
      )
   )
   if !bIsWin8!==n (
      set    bDisabFun=y
      set /p bDisabFun=請(qǐng)問(wèn)是否關(guān)閉Win7部分功能?默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----
      set    bDismIE10=y
      set /p bDismIE10=請(qǐng)問(wèn)是否封裝IE10?默認(rèn)是y,直接回車(chē)/不是輸入小寫(xiě)n----
   )

   ::準(zhǔn)備源系統(tǒng)映像文件與索引序號(hào)。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartSource=請(qǐng)輸入系統(tǒng)映像文件所在盤(pán),不帶冒號(hào)----
         if not exist !LPartSource!: echo 這個(gè)盤(pán)符根本就沒(méi)有使用了,你不要搞笑好吧
         if     exist !LPartSource!: set bHvLSr=y
      )
   )
   dir !LPartSource!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LPartSource!分區(qū)下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)系統(tǒng)映像文件,退出重來(lái)吧!&&goto End

   ::準(zhǔn)備臨時(shí)文件夾\tmp_Imagex,預(yù)備以后作為ScratchDir使用,這段代碼不能隨意移動(dòng)位置!
   ::目的是1:在PE中臨時(shí)文件空間不足,源文件盤(pán)空間一般沒(méi)問(wèn)題;2:如果源文件在固態(tài)盤(pán),要充分固態(tài)盤(pán)速度優(yōu)勢(shì)。
   if not exist !LPartSource!:\tmp_Imagex md !LPartSource!:\tmp_Imagex
   if     exist !LPartSource!:\tmp_Imagex    rd /s /q  !LPartSource!:\tmp_Imagex&&md !LPartSource!:\tmp_Imagex
   ::準(zhǔn)備局部文件夾\mount
   if not exist !LPartSource!:\mount md !LPartSource!:\mount
   if     exist !LPartSource!:\mount (
      :rd
      dir !LPartSource!:\mount /ad /b /s   >%temp%\del_rd.txt
      for /f "usebackq delims=" %%i in (%temp%\del_rd.txt) do ((takeown /f "%%i"  /r /d y >%temp%\del_log.txt>nul 2>nul)&(@echo y|icacls "%%i" /t /q  /grant  administrator:f>nul 2>nul )&(rd "%%i" /s /q>nul 2>nul))
      takeown /f !LPartSource!:\mount /r /d y >%temp%\del_log.txt>nul 2>nul
      @echo y|icacls  !LPartSource!:\mount /t /q  /grant  administrator:f>nul 2>nul
      rd !LPartSource!:\mount /s /q
      if exist !LPartSource!:\mount goto :rd
      del /f  /s /q %temp%\del_log.txt>nul 2>nul
      del /f  /s /q %temp%\del_rd.txt>nul 2>nul
      md !LPartSource!:\mount
   )
   set /p NumWimSource=請(qǐng)輸入系統(tǒng)映像文件序號(hào),我不檢測(cè)無(wú)效序號(hào),不帶冒號(hào)----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效系統(tǒng)映像文件序號(hào),退出重來(lái)吧!&&goto End

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !NumWimSource!==!a! Dism /get-imageinfo /imagefile:%%i
   )
   set /p IndexSource=請(qǐng)輸入系統(tǒng)映像索引序號(hào),我不檢測(cè)無(wú)效序號(hào),不帶冒號(hào)----

   if not !bPatDism!==n (
      cls
      set /a a=0
      dir %~dp0patch /d /b >%temp%\dirPatSeek.txt
      echo 查找到%~dp0patch目錄下所有子目錄,僅查子目錄
      for /f "usebackq delims=" %%i in (%temp%\dirPatSeek.txt) do (
         set /a a+=1
         echo 所有子目錄:!a!  %%i)
      set /a CountPatch=!a!
      if !CountPatch!==0   echo 無(wú)任何patch子目錄&&set bPatDism=n
      echo -----------------------------------------------------
      if not !CountPatch!==0 (
         set /p NumPatch=請(qǐng)輸入patch子目錄序號(hào),不帶冒號(hào)----
         set bVldPat=n
         for /l %%i in (1,1,!CountPatch!) do (
            if !NumPatch!==%%i set bVldPat=y
         )
         if !bVldPat!==n echo 你沒(méi)有輸入有效patch子目錄序號(hào),退出重來(lái)吧!&&goto End
      )
   )

   if not !bDrvDism!==n (
      cls
      set /a a=0
      dir %~dp0Driver /d /b >%temp%\dirDrvSeek.txt
      echo 查找到%~dp0Driver目錄下所有子目錄,僅查子目錄
      for /f "usebackq delims=" %%i in (%temp%\dirDrvSeek.txt) do (
         set /a a+=1
         echo 所有子目錄:!a!  %%i)
      set /a CountDrv=!a!
      if !CountDrv!==0   echo 無(wú)任何Driver子目錄&&set bDrvDism=n
      echo -----------------------------------------------------
      if not !CountDrv!==0 (
         set /p NumDrv=請(qǐng)輸入patch子目錄序號(hào),不帶冒號(hào)----
         set bVldDrv=n
         for /l %%i in (1,1,!CountDrv!) do (
            if !NumDrv!==%%i set bVldDrv=y
         )
         if !bVldDrv!==n echo 你沒(méi)有輸入有效Driver子目錄序號(hào),退出重來(lái)吧!&&goto End
      )
   )

   if !bIsWin8!==n (
      if not !bDismIE10!==n (
         echo IE10升級(jí)包在當(dāng)前目錄子目錄IE下!
         set /a a=0
         dir %~dp0IE /d /b >%temp%\dirIESeek.txt
         echo 查找到%~dp0IE目錄下所有子目錄,僅查子目錄
         for /f "usebackq delims=" %%i in (%temp%\dirIESeek.txt) do (
            set /a a+=1
            echo 所有子目錄:!a!  %%i)
         set /a CountIE=!a!
         if !CountIE!==0   echo 無(wú)任何IE子目錄&&set bDismIE10=n
         echo -----------------------------------------------------
         if not !CountIE!==0 (
            set /p NumIE=請(qǐng)輸入IE子目錄序號(hào),不帶冒號(hào)----
            set bVldIE=n
            for /l %%i in (1,1,!CountIE!) do (
               if !NumIE!==%%i set bVldIE=y
            )
            if !bVldIE!==n echo 你沒(méi)有輸入有效IE子目錄序號(hào),退出重來(lái)吧!&&goto End
         )
      )
   )

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !NumWimSource!==!a! dism /mount-image /imagefile:"%%i" /index:!IndexSource! /mountdir:!LPartSource!:\mount  /Scratchdir:!LPartSource!:\tmp_Imagex  
   )
   
   if not !bPatDism!==n  (
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\dirPatSeek.txt) do (
         set /a a+=1
         if !NumPatch!==!a! dir  "%~dp0patch\%%i" /b /s >%temp%\fPatSeek.txt
      )
      for /f "usebackq delims=" %%j in (%temp%\fPatSeek.txt) do ( dism /image:!LPartSource!:\mount /add-package /packagepath:%%j  /Scratchdir:!LPartSource!:\tmp_Imagex )

   )

   if not !bDrvDism!==n (
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\dirDrvSeek.txt) do (
        set /a a+=1
        if !NumDrv!==!a!  dism /image:!LPartSource!:\mount /add-driver /driver:"%~dp0Driver\%%i" /recurse /forceunsigned  /Scratchdir:!LPartSource!:\tmp_Imagex
      )
   )

   if not !bIsWin8!==n (
      if not !bEnabNet3!==n (
          dism /image:!LPartSource!:\mount /enable-Feature /FeatureName:netfx3 /Source:!LabelISO!:\sources\sxs  /Scratchdir:!LPartSource!:\tmp_Imagex
      )
   )

   if !bIsWin8!==n (
      if not !bDisabFun!==n (
         echo 調(diào)整功能獨(dú)立操作,以增強(qiáng)批處理兼容性,連Win7 Starter都可以用。
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:TabletPCOC
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:WindowsGadgetPlatform   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:MediaCenter     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FaxServicesClientPackage     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-XPSServices-Features   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Xps-Foundation-Xps-Viewer     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Printing-Foundation-InternetPrinting-Client   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Hearts   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Solitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:SpiderSolitaire
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:FreeCell     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Minesweeper      
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:PurblePlace     
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Chess   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:Shanghai   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:InboxGames   
         dism /Image:!LPartSource!:\mount /Disable-Feature /Scratchdir:!LPartSource!:\tmp_Imagex   /FeatureName:OpticalMediaDisc   
      )
      if not !bDismIE10!==n (
         set /a a=0
         for /f "usebackq delims=" %%i in (%temp%\dirIESeek.txt) do (
            set /a a+=1
            if !NumIE!==!a!  (
               dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ie-win7.cab /packagepath:%~dp0ie\%%i\ielangpack-CHS.CAB /Scratchdir:!LPartSource!:\tmp_Imagex
               dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-NEU.msu  /packagepath:%~dp0ie\%%i\IE-Spelling-NEU.msu /Scratchdir:!LPartSource!:\tmp_Imagex         
            )
         )
      )
   )

   set /p bCommit=請(qǐng)問(wèn)是否保存映像修改,默認(rèn)是y,直接回車(chē)/不保存輸入小寫(xiě)n----
   if not !bCommit!==n ( dism /unmount-image /mountdir:!LPartSource!:\mount /commit  /Scratchdir:!LPartSource!:\tmp_Imagex )
   if     !bCommit!==n ( dism /unmount-image /mountdir:!LPartSource!:\mount /discard /Scratchdir:!LPartSource!:\tmp_Imagex )

   rd /s /q  !LPartSource!:\tmp_Imagex
   rd /s /q  !LPartSource!:\mount
   goto End
)
if !OpChoice!==14 (
   echo 查找同目錄(及子目錄)下自動(dòng)應(yīng)答文件,如果一個(gè)都沒(méi)有,那就不要試了。
   echo 本工具包提供的自動(dòng)應(yīng)答文件分64位和32位兩種,通用版僅僅實(shí)現(xiàn)跳過(guò)oobe過(guò)程。
   set /a NumUntitled=0
   set /a a=0
   set NameUntitled=null
   dir %~dp0*.xml /b /s >%~dp0fAppUntitled.txt
   echo 查找到%~dp0目錄下所有自動(dòng)應(yīng)答文件如下表
   echo -----------------------------------------------------
   for /f "usebackq delims=" %%i in (%~dp0fAppUntitled.txt) do ( set /a a+=1&&echo 應(yīng)答文件:!a! %%i)
   if !a!==0   echo 根本就沒(méi)有一個(gè)自動(dòng)應(yīng)答文件,那封裝也沒(méi)什么意思了,準(zhǔn)備退出!&&goto End
   echo.
   set /p NumUntitled=請(qǐng)認(rèn)真選擇應(yīng)答文件序號(hào),不帶冒號(hào)----
   set /a a=0
   for /f "usebackq delims=" %%i in (%~dp0fAppUntitled.txt) do (
      set /a a+=1
      if !NumUntitled!==!a! echo 你選擇的應(yīng)答文件是:%%i
   )
   set    bGoSysprep=y
   set /p bGoSysprep=最后請(qǐng)確認(rèn)現(xiàn)在可以開(kāi)始封裝了嗎?默認(rèn)是,直接回車(chē),如果算了,請(qǐng)輸入小寫(xiě)n----
   if not !bGoSysprep!==n (
      echo 正在幫您清除系統(tǒng)垃圾文件,請(qǐng)稍等......
      ::刪除補(bǔ)丁備份目錄
      rd %windir%\$hf_mig$ /Q /S
      ::刪除系統(tǒng)盤(pán)Office安裝臨時(shí)文件
      rd /s /q %systemdrive%\msocache
      dir /ad /b /s %windir%\$NtUninstall* >%~dp0Del_rd.txt
      dir /ad /b /s %windir%\SoftwareDistribution\Download>>%~dp0Del_rd.txt
      for /f %%i in (%~dp0Del_rd.txt ) do ( rd "%%i" /s /q )
      del %~dp0Del_rd.txt  /f /q
      ::刪除補(bǔ)丁安裝記錄內(nèi)容(下面的del /f /s /q %systemdrive%\*.log已經(jīng)包含刪除此類(lèi)文件)
      del %windir%\KB*.log /f /q
      ::刪除系統(tǒng)盤(pán)目錄下臨時(shí)文件
      del /f /s /q %windir%\*.tmp
      ::刪除系統(tǒng)盤(pán)目錄下臨時(shí)文件
      del /f /s /q %windir%\*._mp
      ::刪除系統(tǒng)盤(pán)目錄下日志文件
      del /f /s /q %windir%\*.log
      ::刪除系統(tǒng)盤(pán)目錄下GID文件
      del /f /s /q %windir%\*.gid
      ::刪除系統(tǒng)目錄下scandisk(磁盤(pán)掃描)留下的無(wú)用文件
      del /f /s /q %windir%\*.chk
      ::刪除系統(tǒng)目錄下old文件
      del /f /s /q %windir%\*.old
      ::刪除回收站的無(wú)用文件
      del /f /s /q %windir%\recycled\*.*
      ::刪除系統(tǒng)目錄下備份文件
      del /f /s /q %windir%\*.bak
      ::刪除系統(tǒng)維護(hù)等操作產(chǎn)生的臨時(shí)文件
      rd /s /q %windir%\temp md %windir%\temp
      ::刪除當(dāng)前用戶(hù)的COOKIE(IE)
      del /f /q %userprofile%\cookies\*.*
      ::刪除internet臨時(shí)文件
      del /f /s /q "%userprofile%\local settings\temporary internet files\*.*"
      ::刪除當(dāng)前用戶(hù)日常操作臨時(shí)文件
      del /f /s /q "%userprofile%\local settings\temp\*.*"
      copy %systemdrive%\Users\%username%\Favorites\*.*  %systemdrive%\Users\Default\Favorites
      dir %~dp0Desk*.bat /b /s >%~dp0fTmp.txt
      dir %~dp0Driver*.bat /b /s >>%~dp0fTmp.txt
      for /f %%i in (%~dp0fTmp.txt) do ( copy %%i %windir%\system32 )
      set /a a=0
      for /f "usebackq delims=" %%i in (%~dp0fAppUntitled.txt) do (
         set /a a+=1
         if !a!==!NumUntitled!  %windir%\system32\sysprep\sysprep.exe /oobe /generalize /shutdown  /unattend:%%i
      )
   )
   goto End
)


if !OpChoice!==15 (

set    bIsUEFI=y
set /p bIsUEFI=請(qǐng)問(wèn)BIOS是否UEFI,默認(rèn)是,不是請(qǐng)輸入小寫(xiě)n----

set bHvLab=n
set /p bHvLab=采用MBR但無(wú)MSR,或者M(jìn)BR中MSR分區(qū)/ESP分區(qū)如已有盤(pán)符,輸入y,其余直接回車(chē)----
if  !bHvLab!==y (
   set /p LabelEFI=請(qǐng)輸入ESP分區(qū)或MBR中MSR分區(qū)盤(pán)符或者M(jìn)BR無(wú)MSR分區(qū)時(shí)的系統(tǒng)盤(pán)符----
)
if  not !bHvLab!==y (
   ::給EFI或者M(jìn)SR分區(qū)分配盤(pán)符
   set bHvSetESP=n
   for %%i in (z y x w v u t s r q p o n m) do (
      if !bHvSetESP!==n ( if  not exist %%i: set LabelEFI=%%i&&set bHvSetESP=y )
   )
   echo list vol>%temp%\DiskPart.txt
   echo exit>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   set /p NumVolESP=請(qǐng)輸入GPT中ESP分區(qū)或MBR中MSR分區(qū)的卷編號(hào),直接回車(chē)----
   echo select vol !NumVolESP!>%temp%\DiskPart.txt
   echo assign letter=!LabelEFI!>>%temp%\DiskPart.txt
   echo exit>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
)
   bcdedit /create {bootmgr} /d "Marc Boot Manager" >nul 2>nul
   bcdedit /set {bootmgr} device partition=\device\harddiskvolume!NumVolESP! >nul 2>nul


set     b8Boot=n
set /p  b8Boot=請(qǐng)問(wèn)是否建8.1/8/7引導(dǎo),默認(rèn)不,如果要建輸入小寫(xiě)y----
if !b8Boot!==y (
       ::創(chuàng)建8.1/8/7引導(dǎo)項(xiàng)
      set l_Sys8=null
      set /p l_Sys8=請(qǐng)問(wèn)要為哪個(gè)盤(pán)的Windows 8.1/8/7建立引導(dǎo),輸入盤(pán)符----
     set    name_MenuWindows=Windows_8.1/8/7
     set /p name_MenuWindows=默認(rèn)菜單項(xiàng)名字Windows_8.1/8/7,可自行輸入不帶空格名字,如Windows_7----

      bcdedit /create /d "!name_MenuWindows!" /application osloader>%temp%\fmid.txt
      for /f "tokens=2 delims= "  %%i in (%temp%\fmid.txt) do (set fmid=%%i)
      bcdedit /set !fmid! device partition=!l_Sys8!:
      if not !bIsUEFI!==n bcdedit /set !fmid! path \windows\system32\winload.efi
      if     !bIsUEFI!==n bcdedit /set !fmid! path \windows\system32\winload.exe
      bcdedit /set !fmid! osdevice partition=!l_Sys8!:
      bcdedit /set !fmid! systemroot  \windows
      bcdedit /displayorder !fmid! /addlast
)

set     b8VhdBoot=n
set /p  b8VhdBoot=請(qǐng)問(wèn)是否建8.1/8/7 VHD引導(dǎo),默認(rèn)不,如果要建輸入小寫(xiě)y----
if !b8VhdBoot!==y (
   ::創(chuàng)建8.1/8/7 VHD引導(dǎo)項(xiàng)
   set namePathVhd=null

   ::準(zhǔn)備VHD系統(tǒng)文件與序號(hào)。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartSource=請(qǐng)輸入VHD系統(tǒng)文件所在盤(pán),不帶冒號(hào)----
         if not exist !LPartSource!: echo 這個(gè)盤(pán)符根本就沒(méi)有使用了,你不要搞笑好吧
         if     exist !LPartSource!: set bHvLSr=y
      )
   )
   dir !LPartSource!:\*.vhd /b /s >%temp%\fSeek.txt
   echo 查找到!LPartSource!分區(qū)下所有VHD文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系統(tǒng)映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 該分區(qū)無(wú)系統(tǒng)VHD文件,退出重來(lái)吧!&&goto End

   set    NumWimSource=1
   set /p NumWimSource=請(qǐng)輸入VHD系統(tǒng)文件序號(hào),我不檢測(cè)無(wú)效序號(hào),默認(rèn)1----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你沒(méi)有輸入有效VHD系統(tǒng)文件序號(hào),退出重來(lái)吧!&&goto End


   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !a!==!NumWimSource! (
         set nameTmp=%%i
         echo 你選擇的VHD系統(tǒng)文件是:%%i
      )
   )

      set   namePathVhd=!nameTmp:~3!

   set    name_MenuVHD=VHD_MBY
   set /p name_MenuVHD=輸入菜單項(xiàng)名字,默認(rèn)VHD_MBY,可自行輸入,如MAXDOS_WYS----


      bcdedit /create /d "!name_MenuVHD!" /application osloader>%temp%\fmid.txt
      for /f "tokens=2 delims= "  %%i in (%temp%\fmid.txt) do (set fmid=%%i)
      bcdedit /set !fmid! device vhd=[!LPartSource!:]\!namePathVhd!
      if not !bIsUEFI!==n bcdedit /set !fmid! path \windows\system32\winload.efi
      if     !bIsUEFI!==n bcdedit /set !fmid! path \windows\system32\winload.exe
      bcdedit /set !fmid! osdevice vhd=[!LPartSource!:]\!namePathVhd!
      bcdedit /set !fmid! systemroot  \windows
      bcdedit /set !fmid! detecthal  yes
      bcdedit /displayorder !fmid! /addlast
)

if     !bIsUEFI!==n (
    set     bXP=n
    set /p  bXP=請(qǐng)問(wèn)是否建XP引導(dǎo),默認(rèn)不,如果要建輸入小寫(xiě)y----
   if !bXP!==y (
       ::創(chuàng)建XP引導(dǎo)項(xiàng)
      set l_SysXP=null
      set /p l_SysXP=請(qǐng)問(wèn)要為哪個(gè)盤(pán)的XP建立引導(dǎo),輸入盤(pán)符----

     set    name_MenuXP=XP_MBY
     set /p name_MenuXP=輸入菜單項(xiàng)名字,默認(rèn)XP_MBY,可自行輸入,如MAXDOS_WYS----

      bcdedit /create {ntldr} /d "!name_MenuXP!"
      bcdedit /set {ntldr} device partition=!l_SysXP!:
      bcdedit /set {ntldr} path \ntldr
      bcdedit /displayorder {ntldr} /addlast
    )
)
   goto End
)

if !OpChoice!==16 (

echo.
bcdedit /enum /v >%temp%\x.txt

::取得GUID所在行。
set  numOrder=null
set /a a=0
for /f "delims= " %%i in ( %temp%\x.txt ) do (
   set /a a+=1
   if %%i==displayorder set numOrder=!a!
)

find "description"  %temp%\x.txt >%temp%\m.txt

set /a a=0
for /f "skip=3 tokens=1,* delims= " %%i in ( %temp%\m.txt ) do (

   set    bDel=n
   set /a Tmp=!a!+1
   set /p bDel=系統(tǒng)啟動(dòng)菜單第!Tmp!項(xiàng)是:%%j,請(qǐng)問(wèn)是否刪除,默認(rèn)不刪,刪除輸入y----

   set /a numItem=!a!+!numOrder!
   if not !bDel!==n (
      set /a c=0
      for /f "tokens=1,* delims= " %%k in ( %temp%\x.txt ) do (
         set /a c+=1
         if !c!==!numItem! (
            if     !numItem!==!numOrder! (
               set item=%%l
               bcdedit /delete %%l >nul 2>nul
               bcdedit /delete %%l /f >nul 2>nul            
            )
            if not !numItem!==!numOrder! (
               set item=%%k
               bcdedit /delete %%k >nul 2>nul
               bcdedit /delete %%k /f >nul 2>nul
            )
         )
      )
   )
   set /a a+=1
)

del /f /s /q %temp%\x.txt>nul 2>nul
del /f /s /q %temp%\m.txt>nul 2>nul
bcdedit /enum
echo.
   goto End
)

:End
set bProceed=n
set /p bProceed=請(qǐng)問(wèn)繼續(xù)其它任務(wù)嗎,重復(fù)運(yùn)行默認(rèn)應(yīng)答選項(xiàng)有效,默認(rèn)不n,直接回車(chē)/是輸入小寫(xiě)y----
if !bProceed!==y goto op

del /f  /s /q %temp%\fSeek.txt>nul 2>nul
del /f  /s /q %temp%\fSrSeek.txt>nul 2>nul
del /f  /s /q %temp%\fDsSeek.txt>nul 2>nul
del /f  /s /q %temp%\dirPatSeek.txt>nul 2>nul
del /f  /s /q %temp%\dirDrvSeek.txt>nul 2>nul
del /f  /s /q %temp%\dirIESeek.txt>nul 2>nul
del /f  /s /q %temp%\fPatSeek.txt>nul 2>nul
del /f  /s /q %temp%\ImageInfo.txt>nul 2>nul
del /f  /s /q %temp%\DiskPart.txt>nul 2>nul
del /f  /s /q %temp%\tmp.txt>nul 2>nul
del /f  /s /q %~dp0fAppUntitled.txt>nul 2>nul
del /f  /s /q %~dp0fTmp.txt>nul 2>nul
del /f  /s /q %~dp0null>nul 2>nul
del /f  /s /q %temp%\Out_DiskPart.txt>nul 2>nul
del /f  /s /q %temp%\Out_tmp.txt>nul 2>nul
del /f  /s /q %temp%\tmp.txt>nul 2>nul
del /f  /s /q %~dp0fdid.txt>nul 2>nul
del /f  /s /q %~dp0fmid.txt>nul 2>nul

echo 任務(wù)結(jié)束時(shí)間是%time:~,2%點(diǎn)%time:~3,2%分%time:~6,2%秒
set "T2=%time%"
if "%T2:~,2%" lss "%T1:~,2%" (set Tday+=8640000)
set   /a "T_d=%Tday%+(%T2:~,2%*360000)+(%T2:~3,1%*60000+%T2:~4,1%*6000)+(%T2:~6,1%*1000+%T2:~7,1%*100)+(%T2:~9,1%*10+%T2:~-1%)-(%T1:~,2%*360000)-(%T1:~3,1%*60000+%T1:~4,1%*6000)-(%T1:~6,1%*1000+%T1:~7,1%*100)-(%T1:~9,1%*10+%T1:~-1%)"
set /a "ss=%T_d%/100%%60"
set /a "mm=%T_d%/6000%%60"
set /a "hh=%T_d%/360000%%1"
set /a "ms=%T_d%%%100"
echo 本次任務(wù)消耗時(shí)間為 %hh%:%mm%:%ss%.%ms%秒
pause

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多