无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 27771|回复: 30

[分享] 个人自用Win8.1_PE_x64制作过程

    [复制链接]
发表于 2013-12-9 13:01:00 | 显示全部楼层 |阅读模式
本帖最后由 2011htpcfans 于 2014-4-23 21:41 编辑


个人自用Win8.1_PE_x64制作过程。

经过一段时间使用调试,2014年4月23日更新附件!另外一部分内容在11楼,应该说也很拉风的!主贴太长写不下,只好删除一部分内容,请大家自己看批处理文件!
这款PE功能局限很多,只适合小众使用,需要使用者懂DiskPart、BcdBoot、BootSect和BCDEdit。
说下我用这个PE干的一点小事:
1、把分区流程也稍作调整,UEFI时是:ESP+msr+第一基本分区+第二基本分区,MBR时是第一基本分区+第二基本分区-1000M(Diskpart Shrink操作)+1000M活动独立引导分区。在分区安装一条龙时也采用如此分区方案。第一基本分区容量默认80G,ESP/独立引导分区容量默认1G,都可自行调整。
2、然后EFI分区里面安装了本PE。这个PE平时肯定是隐藏的,以后本机就不需要U盘启动了;
3、把自封装Win8.1安装源放进EFI分区,装完系统后又增量备份在安装源上;

一、缺点:
(1)绝对肯定没有桌面,没有Explorer;(2)不支持32位程序,32位处理器的电脑统统枪毙;(3)该PE中部分批处理如果有错误输入,可能无法退出,只能重启,建议进入命令提示符后,运行Start cmd,启动另外一个cmd窗口,在子窗口中操作;(4)该PE启动速度不见得快,在映泰G41+E5200+DDR2 800 2G上U盘ISO启动要接近40s,但在我的QS I7 2.6+ASROCK B85m-ITX+DDR3 1600 8G+浦科特M5P 128g上,硬盘安装启动不超过10s,另外有网络连接时时间稍长;(5)只有ISO;(6)只显示不能输入中文。
二、功能,首先保证Microsoft Win8.1_PE原版,通吃bios+MBR和UEFI+GPT,Diskpart、Dism、BCDBoot、BCDEdit、BootSect、XCopy、RoboCopy绝对全兼容,其次加入BootICE x64,Ghost 11.5 x64(还从没见报过错),最后加入了自编的几个小批处理,分区查看,磁盘分区,系统安装,备份,8以上系统引导修复,简单VHD操作,进行PE(Boot.sdi+Boot.wim)硬盘安装,
三、制作过程
安装ADK8.1,PE功能模块,然后以管理员身份运行“部署和映像工具环境”,接着在命令提示符中输入制作ISO PE的批处理,如:d:\backup\make64pe,根据提示输入工作目录,在大约20分钟后出现提示是否保存时把BootICE x64,Ghost 11.5 x64复制到System32目录中,建议也把我那几个批处理复制进去,嘿嘿,大约5分钟后搞定。如果是固态硬盘,除了下载并安装ADK8.1,整个制作过程不超过5分钟。
四、几个批处理简介
这几个批处理大家可以自行修改,或者不修改直接拿走使用了,当然需要一定运行环境,这个好多人懂得。
1、Make64PE
制作64位PE,最好用默认路径,提示输入工作目录时不要输入空格。其实你修改下目录,ADK8,或者32位都可以用,一如既往的好用。如果不在乎体积可以百度下再把.Net4、WMI和PowerShell3集成进来,有了PowerShell3那能完成的事情就不可限量了。
@echo off&color 0a
setlocal enabledelayedexpansion
echo.
echo ------------------------------------------------------------------------------
rd %systemdrive%\users\Dir_Test>nul 2>nul
md %systemdrive%\users\Dir_Test>nul 2>nul||(Echo Please run it in administrators right key!&&Pause >nul&&Exit)
rd %systemdrive%\users\Dir_Test>nul 2>nul
cls
echo Please don't contain the blank space while inputing name of folder!!
echo ------------------------------------------------------------------------------
:InputFolder
set /p Folder=Please input the full name of folder for making PE,as D:\Win8PE_X64----
if exist !Folder! echo Sorry,the folder is already using,please input repeatly!&&goto InputFolder
call copype.cmd amd64 !Folder!
dism /mount-image /imagefile:!Folder!\media\sources\boot.wim /index:1 /mountdir:!Folder!\mount

dism /image:!Folder!\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\lp.cab"

dism /image:!Folder!\mount /set-uilang:zh-cn
dism /image:!Folder!\mount /set-userlocale:zh-cn
dism /image:!Folder!\mount /set-allintl:zh-cn

dism /image:!Folder!\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-zh-cn.cab"

set /p bCommit=Save the work? Input y for save,otherwise hit enter directly!----
if not !bCommit!==y dism /unmount-image /mountdir:!Folder!\mount /discard&&exit
if !bCommit!==y dism /unmount-image /mountdir:!Folder!\mount /commit

bcdedit /store !Folder!\media\boot\bcd /set {bootmgr} locale zh-cn
bcdedit /store !Folder!\media\efi\microsoft\boot\bcd /set {bootmgr} locale zh-cn
call makewinpemedia.cmd /iso !Folder! !Folder!\Win81PE_x64.iso

2、pwDD
它是PowerDiskPartDism的缩写,功能如下所述。运行pwDD,任务类型随便输入1-16以外的任意数字或字母,或者直接回车,是显示所有卷信息。大家可以把这个批处理拿到任何支持DiskPart和Dism的环境中使用,真是方便得不行了,除了你要注意低版本系统最好别操作高版本系统映像。
这里特别要注意的是,如果在PE下运行pwDD,必须在虚拟系统盘,一般X盘,即x:\Windows\System32下运行,如果不在,可能出错,出错以后又可能无法及时退出,只能重启PE,为避免这种情况,上面说进PE命令提示符后再开一个命令提示符窗口,在第二窗口运行,如果熟练或者在正常系统下无所谓。在子窗口中进行安装、备份、整理和分区等操作,如果有问题,直接点那个X退出。
2014年1月16日更新,主要把好多标号去掉了,因为发现虽然每个功能模块没问题,但模块多,标号多了以后程序会出错,即使标号不重复也不行。
其它注意事项:
(1)系统安装,如果牵扯用BootSect设置MBR、PBR,本批处理是全盘一块处理,可能会对exFAT格式的U盘造成影响,如果用U盘装机,最好先复制Wim文件进本地硬盘,在安装系统开始以后拔出U盘。在分区安装一条龙中也把复制文件集成进去了,大家可以看代码。
(2)备份系统,请轻易不要选择删除Windows账号。
(3)用Diskpart分区,分区方案,默认要分1000M的EFI或者MSR分区,如果GPT方案,还要加400M的MSR,然后第一基本分区,一般80G,然后第二基本分区。
(4)完全可以在PE下进行VHD挂载和系统安装、引导修复、系统备份。
(5)系统集成操作,最好在正常系统下操作。需求条件:在某个目录中有本批处理,要集成的系统补丁目录,要集成的驱动目录,要集成的IE补丁。当然PE下满足一定条件也没问题,如果PE下操作,就把本批处理复制到补丁目录和驱动目录上级或同级目录就行了,不建议大家在PE下玩集成。
(6)系统封装SysPrep这个功能必须针对正常系统进行,最好有自动应答文件。经亲测,我所提供的Win8自动应答文件,使用Win8.1 Winth Update!
(7)源代码中涉及临时文件夹一般都在wim文件所在盘,而不在PE虚拟盘中,因为有时PE虚拟盘空间不够,程序会出错。
:op
cls
echo      ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
echo      ┋  任务类型 1: Dism应用映像安装系统。                            ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 2: Dism捕获映像备份系统。                            ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 3: Dism导出映像整理文件。                            ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 4: BCDBoot、BootSect常规引导修复重建。               ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 5: Diskpart磁盘分区。                                ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 6: 为卷(某分区如ESP)分配装载或删除盘符。             ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 7: 在某目录中新建定容vhd虚拟磁盘文件,同时装载。     ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 8: 装载或卸载指定虚拟磁盘文件。                      ┋
echo      ┋                                                                ┋
echo      ┋  任务类型 9: 全新硬盘分区与Dism安装系统一条龙。                ┋
echo      ┋                                                                ┋
echo      ┋  任务类型10: 全新硬盘分区与Ghost安装系统一条龙。               ┋
echo      ┋                                                                ┋
echo      ┋  任务类型11: Ghost分区备份与恢复安装。                         ┋
echo      ┋                                                                ┋
echo      ┋  任务类型12: 将本PE安装于本地硬盘EFI/MBR中独立引导分区。       ┋
echo      ┋                                                                ┋
echo      ┋  任务类型13: 系统集成与功能调整。                              ┋
echo      ┋                                                                ┋
echo      ┋  任务类型14: SysPrep封装Win8.1/8/7 x64 x86系统。               ┋
echo      ┋                                                                ┋
echo      ┋  任务类型15: 为Win8.1/8/7 x64 x86系统添加引导菜单项。          ┋
echo      ┋                                                                ┋
echo      ┋  任务类型16: 删除Win8.1/8/7 x64 x86系统引导菜单项。            ┋
echo      ┋                                                                ┋
echo      ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝

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

echo.
set    OpChoice=0
set /p OpChoice=请选则任务类型,输入有效序号----
echo.

if !OpChoice!==1 (
   set /a a=0
   set /a CountWim=0
   set /a NumWimSource=0
   set /a CountIndex=0
   set /a IndexSource=0
   echo.
   set    bBootNeed=y
   set /p bBootNeed=是否同时建立引导项,默认是y,直接回车/不要输入小写n----
   if not !bBootNeed!==n (
      echo.
      set    bIsUEFI=y
      set /p bIsUEFI=请问是否UEFI引导,默认是,直接回车/不是请输入小写n----
      if  !bIsUEFI!==y (
         ::为ESP分区分配盘符,为减少标号减少goto,要扫描所有可用盘符,效率稍低!
         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 Label_ESP=%%i&&set bHvSetESP=y )
         )
         echo list vol>%temp%\DiskPart.txt
         diskpart /s %temp%\DiskPart.txt
         set /p NumVolESP=请输入GPT中ESP分区的卷编号,直接回车----
         echo select vol !NumVolESP!>%temp%\DiskPart.txt
         echo remove>>%temp%\DiskPart.txt
         echo assign letter=!Label_ESP!>>%temp%\DiskPart.txt
         diskpart /s %temp%\DiskPart.txt
      )
      if  !bIsUEFI!==n (
         echo.
         set    bHvMSR=y
         set /p bHvMSR=请问是否有独立引导分区,默认有,直接回车/没有输入小写n----
         if !bHvMSR!==y (
            echo.
            set bHvLab=n
            set /p bHvLab=请确认独立引导分区是否已有盘符,有输入y,默认没有n,直接回车----
            echo.
            if  !bHvLab!==y (
               set /p Label_ESP=请输入独立引导分区盘符,我不检测无效盘符噢----
            )
            if  not !bHvLab!==y (
               ::为MBR中独立引导分区分配盘符,为减少标号减少goto,要扫描所有可用盘符,效率稍低!
               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 Label_ESP=%%i&&set bHvSetESP=y )
               )
               echo list vol>%temp%\DiskPart.txt
               diskpart /s %temp%\DiskPart.txt
               set /p NumVolESP=请输入MBR中独立引导分区的卷编号,直接回车----
               echo select vol !NumVolESP!>%temp%\DiskPart.txt
               echo assign letter=!Label_ESP!>>%temp%\DiskPart.txt
               diskpart /s %temp%\DiskPart.txt
            )
         )
      )
   )
   echo list vol>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   echo.
   set bHvSetSYS=n
   for /l %%i in (1,1,5) do (
      if !bHvSetSYS!==n (
         set /p Label_SYS=请问系统要安装在哪个盘,我不检测无效盘符噢----
         if not exist !Label_SYS!: echo 你输入的盘符是什么东西,根本不存在吗!
         if     exist !Label_SYS!: set bHvSetSYS=y
      )
   )

   if not !bBootNeed!==n ( if !bIsUEFI!==n (  if !bHvMSR!==n  ( set Label_ESP=!Label_SYS!)))
   echo.
   ::准备源系统映像文件与索引序号。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartSource=请输入系统映像源文件所在盘,不带冒号----
         if not exist !LPartSource!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
         if     exist !LPartSource!: set bHvLSr=y
      )
   )
   dir !LPartSource!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LPartSource!分区下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系统映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 该分区无系统映像文件,退出重来吧!&&goto End

   ::准备全局临时文件夹\tmp_Imagex,预备以后作为ScratchDir使用
   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

   echo.
   set /p NumWimSource=请输入系统映像文件序号,我不检测无效序号,不带冒号----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你没有输入有效系统映像文件序号,退出重来吧!&&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
   )

   echo.
   set /p IndexSource=请输入系统映像索引序号,我不检测无效序号,不带冒号----
   vol !Label_SYS!:
   echo.
   echo 格式化!Label_SYS!盘,请核对分区对否,慎重,别破坏数据。
   echo.
   pause
   format !Label_SYS!: /q /x /u /y /fs:ntfs /a:4096 /v:WSYS

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !a!==!NumWimSource! Dism /Apply-Image /ImageFile:"%%i" /Index:!IndexSource! /ApplyDir:!Label_SYS!:\ /Scratchdir:!LPartSource!:\tmp_Imagex
   )

   if not !bBootNeed!==n (
      if not !bIsUEFI!==n  %windir%\system32\bcdboot !Label_SYS!:\windows /s !Label_ESP!: /f uefi /l zh-cn
      if     !bIsUEFI!==n (
         if not exist !Label_SYS!:\bootmgr  %windir%\system32\bootsect.exe /nt52 all /force /mbr
         if     exist !Label_SYS!:\bootmgr  (
            %windir%\system32\bootsect.exe /nt60 all /force /mbr
            %windir%\system32\bcdboot !Label_SYS!:\windows /s !Label_ESP!: /f bios /l zh-cn
         )
      )
   )
   rd /s /q  !LPartSource!:\tmp_Imagex
   goto End
)


if !OpChoice!==5 (
   echo.
   echo GPT中EFI分区、MBR中独立引导分区容量1000M,GPT中msr分区容量400M!
   echo MBR中先分第一、二基本分区,再从二区末尾缩减1000M,用于最后的独立引导分区!
   echo 第一分区容量80G,可自行输入;控制分区容量,防止最后引导分区容量不够,出错!
   echo list disk>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt

   echo.
   set    choiceDisk=0
   set /p choiceDisk=请输入要操作的磁盘编号,从0起编,默认第0磁盘,直接回车----
   echo.
   set    bPart_GPT=y
   set /p bPart_GPT=请问是否进行GPT分区,默认是,直接回车/不是请输入小写n----

   echo select disk !choiceDisk!>%temp%\DiskPart.txt
   echo detail disk>>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt

   echo.
   set    SizeEFI=1000
   set /p SizeEFI=输入EFI或者MBR中独立引导分区容量,单位M,默认1000,直接回车----

   echo.
   set    SizePartition=80000
   set /p SizePartition=输入第一基本分区容量,剩余为第二分区,默认80G,直接回车,单位M----
   echo select disk !choiceDisk!>%temp%\DiskPart.txt
   echo clean>>%temp%\DiskPart.txt
   if not !bPart_GPT!==n (
      echo convert gpt>>%temp%\DiskPart.txt
      echo create partition efi size=!SizeEFI!  offset=1024>>%temp%\DiskPart.txt
      echo format fs=fat32 quick>>%temp%\DiskPart.txt

      echo create partition msr size=400>>%temp%\DiskPart.txt

      echo create partition primary size=!SizePartition!>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      ::可在此预先指定盘符
      echo assign>>%temp%\DiskPart.txt
   )

   if !bPart_GPT!==n (
      echo create partition primary size=!SizePartition! offset=1024>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      ::可在此预先指定盘符
      echo assign>>%temp%\DiskPart.txt
   )

   echo create partition primary>>%temp%\DiskPart.txt
   echo format fs=ntfs quick>>%temp%\DiskPart.txt
   ::可在此预先指定盘符
   echo assign>>%temp%\DiskPart.txt

   if !bPart_GPT!==n (
      ::echo select part 2 >>%temp%\DiskPart.txt
      echo shrink desired=!SizeEFI! minimum=300>>%temp%\DiskPart.txt
  
      echo create partition primary>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      ::可在此预先指定盘符
      echo assign>>%temp%\DiskPart.txt
      echo active>>%temp%\DiskPart.txt  
   )

   echo list partition>>%temp%\DiskPart.txt

   echo.
   ::可在此加暂停,在本批处理目录查看DiskPart.txt内容,还可手动改盘符,保存后生效
   set /p bProceed=你选择对磁盘^<!choiceDisk!^>进行分区操作,请确认是否继续,是y,非n---
   if not !bProceed!==y exit
   diskpart /s %temp%\DiskPart.txt
   goto End
)
if !OpChoice!==9 (
   echo list disk>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt

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

   set /a a=0
   set /a CountWim=0
   set /a NumWimSource=0
   set /a CountIndex=0
   set /a IndexSource=0

   echo list disk>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt>%temp%\Out_DiskPart.txt
   find /i "磁盘" %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)
   echo -----------------------------------------------------
   for /l %%i in (1,1,5) do (
      if !bVldNum!==n (set /p  NumDisk=请输入要安装系统的目标磁盘编号,从0起编,默认第0块磁盘----)
      for /l %%j in (0,1,!CountDisk!) do (
         if !NumDisk!==%%j set bVldNum=y
      )
   )
   if !bVldNum!==n (echo 磁盘编号5次都输错,算了退出吧!&&exit)
   echo.
   echo GPT中EFI分区、MBR中独立引导分区容量1000M,GPT中msr分区容量400M!
   echo MBR中先分第一、二基本分区,再从二区末尾缩减1000M,用于最后的独立引导分区!
   echo 第一分区容量80G,可自行输入;控制分区容量,防止最后引导分区容量不够,出错!
   echo -----------------------------------------------------
   set    bPart_GPT=y
   set /p bPart_GPT=请问是否进行GPT分区,不是请输入小写n,默认是,直接回车----
   echo.
   set    SizeEFI=1000
   set /p SizeEFI=输入EFI或者MBR中独立引导分区容量,单位M,默认1000,直接回车----
   echo.
   set    SizePartition=80000
   set /p SizePartition=输入第一基本分区容量,单位M,默认80G,直接回车----

   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 Label_ESP=%%i&&set bHvSetESP=y )
   )

   echo select disk !NumDisk!>%temp%\DiskPart.txt
   echo clean>>%temp%\DiskPart.txt

   if not !bPart_GPT!==n (
      echo convert gpt>>%temp%\DiskPart.txt
      echo create partition efi size=!SizeEFI!  offset=1024>>%temp%\DiskPart.txt
      echo format fs=fat32 quick>>%temp%\DiskPart.txt
      echo assign letter=!Label_ESP!>>%temp%\DiskPart.txt   
      echo create partition msr size=400>>%temp%\DiskPart.txt

      echo create partition primary size=!SizePartition!>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      echo assign>>%temp%\DiskPart.txt
   )
   if !bPart_GPT!==n (
      echo create partition primary size=!SizePartition! offset=1024>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      echo assign>>%temp%\DiskPart.txt
   )

   echo create partition primary>>%temp%\DiskPart.txt
   echo format fs=ntfs quick>>%temp%\DiskPart.txt
   echo assign>>%temp%\DiskPart.txt

   if !bPart_GPT!==n (
      ::echo select part 2 >>%temp%\DiskPart.txt
      echo shrink desired=!SizeEFI! minimum=300>>%temp%\DiskPart.txt

      echo create partition primary>>%temp%\DiskPart.txt
      echo format fs=ntfs quick>>%temp%\DiskPart.txt
      ::可在此预先指定盘符
      echo assign letter=!Label_ESP!>>%temp%\DiskPart.txt
      echo active>>%temp%\DiskPart.txt  
   )

   echo list partition>>%temp%\DiskPart.txt
   ::暂停等待输入,在此查看DiskPart.txt内容,保存后生效
   echo.
   set    bProceed=y
   set /p bProceed=你选择对磁盘^<!NumDisk!^>进行分区操作,不分区n,默认分y,直接回车---
   if not !bProceed!==y exit
   diskpart /s %temp%\DiskPart.txt

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

   echo.
   set /p NumVolESP=请输入GPT中ESP分区或MBR中独立引导分区的卷编号,然后回车----
   echo.
   ::现在准备指定要安装系统分区,请看盘符信息。
   set bHvSYS=n
   for /l %%i in (1,1,5) do (
      if !bHvSYS!==n (
         set /p LabSYS=请输入要安装系统分区盘符,不带冒号,然后回车----
         if not exist !LabSYS!: echo 你输入的盘符是什么东西,根本不存在吗?
         if     exist !LabSYS!: set bHvSYS=y
      )
   )
   echo.
   echo 现在准备把映像wim文件复制到本地磁盘另外一个分区中,请看盘符信息。
   echo.
   ::指定系统映像源文件本地磁盘放置分区。
   set bHvLabSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLabSr!==n (
         set /p LabelSr=请输入要放置映像wim文件的盘符,直接回车----
         if not exist !LabelSr!: echo 你输入的盘符是什么东西,根本不存在吗?
         if     exist !LabelSr!: set bHvLabSr=y
      )
   )
   echo.
   ::准备全局临时文件夹\tmp_Imagex,预备以后作为ScratchDir使用
   if not exist !LabelSr!:\tmp_Imagex md !LabelSr!:\tmp_Imagex
   if     exist !LabelSr!:\tmp_Imagex    rd /s /q  !LabelSr!:\tmp_Imagex&&md !LabelSr!:\tmp_Imagex

   if not exist !LabelSr!:\backup md !LabelSr!:\backup

   ::准备源系统映像文件与索引序号。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartU=请输入系统映像源文件所在U盘盘符,不带冒号----
         if not exist !LPartU!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
         if     exist !LPartU!: set bHvLSr=y
      )
   )

   dir !LPartU!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LPartU!分区下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系统映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 该分区无系统映像文件,退出重来吧!&&goto End

   echo.
   set /p NumWimSource=请输入系统映像源文件序号,我不检测无效序号,不带冒号----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你没有输入有效系统映像文件序号,退出重来吧!&&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 list vol>%temp%\DiskPart.txt
   diskpart /s %temp%\DiskPart.txt
   ::准备复制U盘PE进EFI/MSR分区。
   echo.
   set bCpyPE=n
   for /l %%i in (1,1,5) do (
      if !bCpyPE!==n (
         set /p LabU=请输入PE源盘即DVD盘盘符,不带冒号,然后回车----
         if not exist !LabU!:\sources\boot.wim echo 这个盘不对,你不要搞笑好吧
         if     exist !LabU!:\sources\boot.wim (
            set bCpyPE=y
            if not exist !Label_ESP!:\boot\  md !Label_ESP!:\boot\
            if not exist !Label_ESP!:\winpe\  md !Label_ESP!:\winpe\
            if exist !Label_ESP!:\bootmgr      del /f /q !Label_ESP!:\bootmgr
            if exist !Label_ESP!:\bootmgr.efi  del /f /q !Label_ESP!:\bootmgr.efi
            xcopy /h  !LabU!:\bootmgr       !Label_ESP!:\
            xcopy /h  !LabU!:\bootmgr.efi   !Label_ESP!:\
            robocopy  !LabU!:\boot\     !Label_ESP!:\boot\ /e /xf bcd
            copy  /y !LabU!:\sources\boot.wim     !Label_ESP!:\winpe\
            copy  /y !LabU!:\boot\boot.sdi     !Label_ESP!:\winpe\
         )
      )
   )

   echo 映像文件已拷贝到本地磁盘,程序暂停,U盘可以拔出它用,然后继续。
   pause
   echo.
   dir !LabelSr!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LabelSr!分区下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系统映像:!a! %%i)
   set /a CountWim=!a!

   echo -----------------------------------------------------
   set /p NumWimSource=请输入系统映像源文件序号,我不检测无效序号,不带冒号----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你没有输入有效系统映像文件序号,退出重来吧!&&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
   )

   echo.
   set /p IndexSource=请输入系统映像索引序号,我不检测无效序号,不带冒号----

   echo.
   vol !LabSYS!:
   echo 格式化!LabSYS!盘,请核对分区对否,慎重,别破坏数据。
   echo.
   pause
   format !LabSYS!: /q /x /u /y /fs:ntfs /a:4096 /v:WSYS

   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do (
      set /a a+=1
      if !a!==!NumWimSource! Dism /Apply-Image /ImageFile:"%%i" /Index:!IndexSource! /ApplyDir:!LabSYS!:\ /Scratchdir:!LabelSr!:\tmp_Imagex
   )

   if !bPart_GPT!==y %windir%\system32\bcdboot !LabSYS!:\windows /s !Label_ESP!: /f uefi /l zh-cn
   if not !bPart_GPT!==y (
      if not exist !LabSYS!:\bootmgr  %windir%\system32\bootsect.exe /nt52 !Label_ESP!: /force /mbr
      if     exist !LabSYS!:\bootmgr (
         %windir%\system32\bootsect.exe /nt60 !Label_ESP!: /force /mbr
         %windir%\system32\bcdboot !Label_SYS!:\windows /s !Label_ESP!: /f bios /l zh-cn
      )
   )

   if exist %temp%\bcd del /f /q %temp%\bcd
   bcdedit /createstore %temp%\bcd
   bcdedit /store %temp%\bcd /create {bootmgr} /d "Marc Boot Manager" >nul 2>nul
   bcdedit /store %temp%\bcd /set {bootmgr} device partition=\device\harddiskvolume!NumVolESP! >nul 2>nul
      
   ::下面几条语句好像有点多余,呵呵!
   bcdedit /store %temp%\bcd /create /d "Windows 8.1/8/7" /application osloader>%temp%\fmid.txt
   for /f "tokens=2 delims= "  %%i in (%temp%\fmid.txt) do (set fmid=%%i)
   bcdedit /store %temp%\bcd /set !fmid! device partition=!LabSYS!:
   if not !bPart_GPT!==n bcdedit /store %temp%\bcd /set !fmid! path \windows\system32\winload.efi
   if     !bPart_GPT!==n bcdedit /store %temp%\bcd /set !fmid! path \windows\system32\winload.exe
   bcdedit /store %temp%\bcd /set !fmid! osdevice partition=!LabSYS!:
   bcdedit /store %temp%\bcd /set !fmid! systemroot  \windows
   bcdedit /store %temp%\bcd /displayorder !fmid! /addlast

   echo.
   set     bMenuPE=y
   set /p  bMenuPE=最后请问是否建立PE引导菜单项,默认建立,如果不建输入小写n----

   if not !bMenuPE!==n (
      ::创建设备项
      bcdedit  /store %temp%\bcd /create /d "Win81PE_x64" /device>%~dp0fdid.txt
      ::取得所生成的设备标识符
      for /f "tokens=2 delims= "  %%i in (%~dp0fdid.txt) do (set fdid=%%i)
      ::设置设备所在分区
      bcdedit  /store %temp%\bcd /set !fdid! ramdisksdidevice partition=!Label_ESP!:
      ::设置设备所在的固定路径
      bcdedit  /store %temp%\bcd /set !fdid! ramdisksdipath \winpe\boot.sdi
      ::创建菜单项
      bcdedit  /store %temp%\bcd /create /d "Win81PE_x64" /application osloader>%~dp0fmid.txt
      ::取得所生成的菜单标识符
      for /f "tokens=2 delims= "  %%i in (%~dp0fmid.txt) do (set fmid=%%i)
      ::设置启动设备
      bcdedit  /store %temp%\bcd /set !fmid! device ramdisk=[!Label_ESP!:]\winpe\boot.wim,!fdid!
      ::设置系统设备
      bcdedit  /store %temp%\bcd /set !fmid! osdevice ramdisk=[!Label_ESP!:]\winpe\boot.wim,!fdid!
      ::设定启动程序(winload)的路径
      if not !bPart_GPT!==n bcdedit  /store %temp%\bcd /set !fmid! path \windows\system32\winload.efi
      if     !bPart_GPT!==n bcdedit  /store %temp%\bcd /set !fmid! path \windows\system32\winload.exe
      ::设置系统根目录
      bcdedit  /store %temp%\bcd /set !fmid! systemroot \windows
      ::开启detecthal支持
      bcdedit  /store %temp%\bcd /set !fmid! detecthal yes
      ::开启WinPE支持
      bcdedit  /store %temp%\bcd /set !fmid! winpe yes
      ::设置nx为optin
      bcdedit  /store %temp%\bcd /set !fmid! nx optin
      ::设置为最后一项显示
      bcdedit  /store %temp%\bcd /displayorder !fmid! /addlast

      bcdedit  /store %temp%\bcd /timeout 2
      bcdedit  /store %temp%\bcd /enum all
   )

   bcdedit  /import %temp%\bcd
   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分区或者MBR中独立引导分区内,防止PE受损,没有这种分区你就老外了。
   echo.
   echo ------------------------------------------------------------------------------
   echo PE放于指定盘根目录下WinPE文件夹,设备文件Boot.sdi和启动文件Boot.wim也固定。

   echo.
   set    bIsUEFI=y
   set /p bIsUEFI=请问BIOS是否UEFI,默认是,不是请输入小写n----

   echo.
   set bHvLab=n
   set /p bHvLab=采用MBR但无独立引导分区,或者MBR中独立引导分区/ESP分区如已有盘符,输入y,其余直接回车----
   if  !bHvLab!==y (
      echo.
      set /p LabelEFI=请输入ESP分区或MBR中MBR中独立引导分区盘符或者MBR无独立引导分区时的系统盘符----
   )
   if  not !bHvLab!==y (
      ::给EFI或者MBR中独立引导分区分配盘符
      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
      echo.
      set /p NumVolESP=请输入GPT中ESP分区或MBR中独立引导分区的卷编号,直接回车----
      echo select vol !NumVolESP!>%temp%\DiskPart.txt
      echo assign letter=!LabelEFI!>>%temp%\DiskPart.txt
      diskpart /s %temp%\DiskPart.txt
   )

   ::UEFI引导需要PE源盘安装硬盘PE,默认需要本PE源盘,MBR引导,默认也要
   echo.
   set     bCopyPE=y
   set /p  bCopyPE=请问是否需要复制PE文件,默认需要,不需要输入小写n----

   if not !bCopyPE!==n (
      echo.
      set    name_PE=PE_MBY
      set /p name_PE=默认安装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!

      echo.
      set bHvLSr=n
      for /l %%i in (1,1,5) do (
         if !bHvLSr!==n (
            set /p LPartU=请输入PE源文件所在盘盘符,可以是本地硬盘,不带冒号----
            if not exist !LPartU!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
            if     exist !LPartU!: set bHvLSr=y
         )
      )
      echo.
      dir !LPartU!:\*.sdi /b /s >%temp%\fdSeek.txt
      echo 查找到!LPartU!分区下所有映像引导文件*.sdi如下表
      echo -----------------------------------------------------
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do ( set /a a+=1&&echo 系统引导文件:!a! %%i)
      set /a CountWim=!a!
      if !a!==0   echo 该分区无PE系统映像引导文件,退出重来吧!&&goto End
      echo -----------------------------------------------------
      set /p NumSdi=请输入系统映像引导文件序号,我不检测无效序号,默认1----
      set bVldNSr=n
      for /l %%i in (1,1,!CountWim!) do ( if !NumSdi!==%%i set bVldNSr=y   )
      if !bVldNSr!==n echo 你没有输入有效PE系统映像文件序号,退出重来吧!&&goto End

      echo.
      dir !LPartU!:\*.wim /b /s >%temp%\fwSeek.txt
      echo 查找到!LPartU!分区下所有映像文件如下表
      echo -----------------------------------------------------
      set /a a=0
      for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do ( set /a a+=1&&echo PE系统映像:!a! %%i)
      set /a CountWim=!a!
      if !a!==0   echo 该分区无PE系统映像文件,退出重来吧!&&goto End
      echo -----------------------------------------------------
      set /p NumWimSource=请输入PE系统映像文件序号,我不检测无效序号,默认1----
      set bVldNSr=n
      for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
      if !bVldNSr!==n echo 你没有输入有效PE系统映像文件序号,退出重来吧!&&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 (
      echo.
      set     bCopyBoot=n
      set /p  bCopyBoot=是否需要从PE源盘复制MBR启动环境文件,默认不,需要输入小写y----

      if not !bCopyBoot!==n (
         echo.
         set bHvLSr=n
         for /l %%i in (1,1,5) do (
            if !bHvLSr!==n (
               set /p LPartPE=请输入PE源盘盘符,然后回车----
               if not exist !LPartPE!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
               if     exist !LPartPE!: set bHvLSr=y
            )
         )

         if not exist !LPartPE!:\boot\ ( echo 这个盘里没有启动环境文件,你不要搞笑好吧!&& 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
      )
   )

   echo.
   set     bbPE=y
   set /p  bbPE=请问是否建PE菜单项,默认建,如果不建输入小写n----
   if not !bbPE!==n (

      if  !bCopyPE!==n (
         ::没有复制源文件,说明ESP/MBR中独立引导分区中已经存在PE源文件,查找相应路径
         echo.
         dir !LabelEFI!:\*.sdi /b /s >%temp%\fdSeek.txt
         echo 查找到!LabelEFI!分区下所有映像引导文件*.sdi如下表
         echo -----------------------------------------------------
         set /a a=0
         for /f "usebackq delims=" %%i in (%temp%\fdSeek.txt) do ( set /a a+=1&&echo 系统引导文件:!a! %%i )
         set /a CountWim=!a!
         if !a!==0   echo 该分区无PE系统映像引导文件,退出重来吧!&&goto End
         echo -----------------------------------------------------
         set /p NumSdi=请输入系统映像引导文件序号,我不检测无效序号,默认1----
         set bVldNSr=n
         for /l %%i in (1,1,!CountWim!) do ( if !NumSdi!==%%i set bVldNSr=y   )
         if !bVldNSr!==n echo 你没有输入有效PE系统映像文件序号,退出重来吧!&&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.
         echo 引导文件路径是:!name_PathSdi!
         set /p name_PathSdi=如果路径有误,请手工输入,默认不需要,直接回车----

         echo.
         dir !LabelEFI!:\*.wim /b /s >%temp%\fwSeek.txt
         echo 查找到!LabelEFI!分区下所有PE映像文件如下表
         echo -----------------------------------------------------
         set /a a=0
         for /f "usebackq delims=" %%i in (%temp%\fwSeek.txt) do ( set /a a+=1&&echo PE系统映像:!a! %%i)
         set /a CountWim=!a!
         if !a!==0   echo 该分区无PE系统映像文件,退出重来吧!&&goto End
         echo -----------------------------------------------------
         set /p NumWimSource=请输入PE系统映像文件序号,我不检测无效序号,默认1----
         set bVldNSr=n
         for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
         if !bVldNSr!==n echo 你没有输入有效PE系统映像文件序号,退出重来吧!&&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.
         echo PE系统文件路径是:!name_PathWim!
         set /p name_PathWim=如果路径有误,请手工输入,默认不需要,直接回车----
      )

      echo.
      set    name_MenuPE=PE_MBY
      set /p name_MenuPE=输入菜单项名字,默认PE_MBY,可自行输入,如MAXDOS_WYS----

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

      echo.
      set /p NumVolESP=请输入GPT中ESP分区或MBR中独立引导分区的卷编号,直接回车----
      bcdedit /create {bootmgr} /d "Marc Boot Manager" >nul 2>nul
      bcdedit /set {bootmgr} device partition=\device\harddiskvolume!NumVolESP! >nul 2>nul


      ::创建设备项
      bcdedit  /create /d "!name_MenuPE!" /device>%~dp0fdid.txt
      ::取得所生成的设备标识符
      for /f "tokens=2 delims= "  %%i in (%~dp0fdid.txt) do (set fdid=%%i)
      ::设置设备所在分区
      bcdedit  /set !fdid! ramdisksdidevice partition=!LabelEFI!:
      ::设置设备所在的固定路径
      bcdedit  /set !fdid! ramdisksdipath \!name_PathSdi!\boot.sdi
      ::创建菜单项
      bcdedit  /create /d "!name_MenuPE!" /application osloader>%~dp0fmid.txt
      ::取得所生成的菜单标识符
      for /f "tokens=2 delims= "  %%i in (%~dp0fmid.txt) do (set fmid=%%i)
      ::设置启动设备
      bcdedit  /set !fmid! device ramdisk=[!LabelEFI!:]\!name_PathWim!\boot.wim,!fdid!
      ::设置系统设备
      bcdedit  /set !fmid! osdevice ramdisk=[!LabelEFI!:]\!name_PathWim!\boot.wim,!fdid!
      ::设定启动程序(winload)的路径
      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! systemroot \windows
      ::开启detecthal支持
      bcdedit  /set !fmid! detecthal yes
      ::开启WinPE支持
      bcdedit  /set !fmid! winpe yes
      ::设置nx为optin
      bcdedit  /set !fmid! nx optin
      ::设置为最后一项显示
      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 (

   del /f  /s /q %temp%\InfoDism.txt>nul 2>nul
   echo.
   echo 1:本批处理、驱动和补丁子目录、IE升级包必需都在当前目录。
   echo    在同目录中有\Driver、\patch和\IE固定目录,放置驱动和补丁子目录。
   echo    如\Driver\Drv_Win8_x64,\patch\patch_Win8_x64
   echo    调整Win7、Win8功能,可能还要准备Win8原版光盘,或者IE10安装包。
   echo.
   echo 2:当前目录下工作子目录,挂载文件夹\Mount,临时文件夹\tmp_Imgex。
   echo    临时文件*.txt都在系统临时文件夹%temp%中。
   echo.
   pause
   ::准备全局变量
   set /a a=0
   set /a CountWim=0
   set /a CountIndex=0
   set /a NumWimSource=0
   set /a IndexSource=0

   ::准备局部变量
   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    bIsWin8=y
   set /p bIsWin8=请问映像版本是否Win8?默认是y,直接回车/不是输入小写n----
   if not !bIsWin8!==n (
      set    bEnabNet3=y
      set /p bEnabNet3=请问是否启用 .Net 3.5/2支持?默认是y,直接回车/不是输入小写n----
      if not !bEnabNet3!==n (
         set /p LabelISO=请插入光盘或者装载ISO,并准确输入盘符!----
      )
   )

   set    bPatDism=y
   set /p bPatDism=请问是否封装系统补丁?默认是y,直接回车/不是输入小写n----


   ::要为Win7封装IE11/IE10,必须封装预备补丁,4-9个。
   if !bIsWin8!==n (
      set    bDisabFun=y
      set /p bDisabFun=请问是否关闭Win7部分功能?默认是y,直接回车/不是输入小写n----
      set    bDismIE10=y
      set /p bDismIE10=请问是否封装IE10/IE11?默认是y,直接回车/不是输入小写n----
   )

   set    bDrvDism=y
   set /p bDrvDism=请问是否封装硬件驱动?默认是y,直接回车/不是输入小写n----

   ::准备源系统映像文件与索引序号。
   set bHvLSr=n
   for /l %%i in (1,1,5) do (
      if !bHvLSr!==n (
         set /p LPartSource=请输入系统映像文件所在盘,不带冒号----
         if not exist !LPartSource!: echo 这个盘符根本就没有使用了,你不要搞笑好吧
         if     exist !LPartSource!: set bHvLSr=y
      )
   )
   dir !LPartSource!:\*.wim /b /s >%temp%\fSeek.txt
   echo 查找到!LPartSource!分区下所有映像文件如下表
   echo -----------------------------------------------------
   set /a a=0
   for /f "usebackq delims=" %%i in (%temp%\fSeek.txt) do ( set /a a+=1&&echo 系统映像:!a! %%i)
   set /a CountWim=!a!
   if !a!==0   echo 该分区无系统映像文件,退出重来吧!&&goto End

   ::准备临时文件夹\tmp_Imagex,预备以后作为ScratchDir使用,这段代码不能随意移动位置!
   ::目的是1:在PE中临时文件空间不足,源文件盘空间一般没问题;2:如果源文件在固态盘,要充分固态盘速度优势。
   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
   ::准备局部文件夹\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=请输入系统映像文件序号,我不检测无效序号,不带冒号----
   set bVldNSr=n
   for /l %%i in (1,1,!CountWim!) do ( if !NumWimSource!==%%i set bVldNSr=y   )
   if !bVldNSr!==n echo 你没有输入有效系统映像文件序号,退出重来吧!&&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=请输入系统映像索引序号,我不检测无效序号,不带冒号----

   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 无任何patch子目录&&set bPatDism=n
      echo -----------------------------------------------------
      if not !CountPatch!==0 (
         set /p NumPatch=请输入patch子目录序号,不带冒号----
         set bVldPat=n
         for /l %%i in (1,1,!CountPatch!) do (
            if !NumPatch!==%%i set bVldPat=y
         )
         if !bVldPat!==n echo 你没有输入有效patch子目录序号,退出重来吧!&&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 无任何Driver子目录&&set bDrvDism=n
      echo -----------------------------------------------------
      if not !CountDrv!==0 (
         set /p NumDrv=请输入patch子目录序号,不带冒号----
         set bVldDrv=n
         for /l %%i in (1,1,!CountDrv!) do (
            if !NumDrv!==%%i set bVldDrv=y
         )
         if !bVldDrv!==n echo 你没有输入有效Driver子目录序号,退出重来吧!&&goto End
      )
   )

   if !bIsWin8!==n (
      if not !bDismIE10!==n (
         echo IE10升级包在当前目录子目录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 无任何IE子目录&&set bDismIE10=n
         echo -----------------------------------------------------
         if not !CountIE!==0 (
            set /p NumIE=请输入IE子目录序号,不带冒号----
            set bVldIE=n
            for /l %%i in (1,1,!CountIE!) do (
               if !NumIE!==%%i set bVldIE=y
            )
            if !bVldIE!==n echo 你没有输入有效IE子目录序号,退出重来吧!&&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 !bIsWin8!==n (
      if not !bEnabNet3!==n (
          dism /image:!LPartSource!:\mount /enable-Feature /FeatureName:netfx3 /Source:!LabelISO!:\sources\sxs  /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  || echo %%j>>%temp%\InfoDism.txt
      )

   )

   if !bIsWin8!==n (
      if not !bDisabFun!==n (
         echo 调整功能独立操作,以增强批处理兼容性,连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 /Scratchdir:!LPartSource!:\tmp_Imagex

               if exist %~dp0ie\%%i\ielangpack-CHS.CAB    dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-CHS.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex
               if exist %~dp0ie\%%i\ielangpack-zh-cn.CAB  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\ielangpack-zh-cn.CAB  /Scratchdir:!LPartSource!:\tmp_Imagex

               if exist %~dp0ie\%%i\IE-Hyphenation-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-neu.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
               if exist %~dp0ie\%%i\IE-Hyphenation-en.msu  dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Hyphenation-en.msu  /Scratchdir:!LPartSource!:\tmp_Imagex

               if exist %~dp0ie\%%i\IE-Spelling-neu.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-neu.msu  /Scratchdir:!LPartSource!:\tmp_Imagex
               if exist %~dp0ie\%%i\IE-Spelling-en.msu dism /image:!LPartSource!:\mount /add-package /packagepath:%~dp0ie\%%i\IE-Spelling-en.msu  /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  >>%temp%\InfoDism.txt
        )
      )
   )

   set    bCommit=y
   set /p bCommit=请问是否保存映像修改,默认是y,直接回车/不保存输入小写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
)
Snap4.jpg

pwDD_20140423.rar

39.53 KB, 下载次数: 339, 下载积分: 无忧币 -2

评分

参与人数 5无忧币 +25 收起 理由
Rachilee + 5 很给力!
freesoft00 + 5
tapy + 5 很给力!
ferdfg + 5 探索学习永无止境............
tt911 + 5 只看不顶不加分的都该枪 毙 ,我来支持下。

查看全部评分

发表于 2013-12-9 21:10:05 | 显示全部楼层
支持,感谢分享。分享就是大善
回复

使用道具 举报

发表于 2013-12-9 18:40:44 | 显示全部楼层
支持了,虽然跟我的想象有点不一样。。。。
回复

使用道具 举报

发表于 2013-12-9 14:42:52 | 显示全部楼层
这个是楼主原创的啊,现在原创的PE很少了,支持了啊。
回复

使用道具 举报

发表于 2013-12-13 14:38:56 | 显示全部楼层
感谢分享,学习
回复

使用道具 举报

发表于 2013-12-15 13:43:49 | 显示全部楼层
谢谢分享,
好牛的样子
回复

使用道具 举报

 楼主| 发表于 2013-12-16 23:54:53 | 显示全部楼层
自用一段时间后更新,希望有点用!
回复

使用道具 举报

发表于 2013-12-18 10:02:56 | 显示全部楼层
        只看不顶不加分的都该枪 毙 ,我来支持下。
回复

使用道具 举报

发表于 2014-1-15 11:38:11 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2014-1-16 00:59:58 | 显示全部楼层
支持!wim81的dism比以前的版本强大很多!
回复

使用道具 举报

 楼主| 发表于 2014-1-16 14:06:49 | 显示全部楼层
本帖最后由 2011htpcfans 于 2014-1-16 14:08 编辑

帖子有字数限制,只能再占一楼接着说,不好意思。

4、自动应答文件示例介绍
实际上这块内容已经不是WinPE制作了,只不过这个批处理功能集成进来了,就一并简要说明。
自动应答文件,对应操作系统版本专业版、旗舰版通用,更大范围样本没有试过,应该没问题。
(1)通用自动应答文件示例
该自动应答文件仅仅实现了系统安装自动应答
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>zh-cn</InputLocale>
            <SystemLocale>zh-cn</SystemLocale>
            <UILanguage>zh-cn</UILanguage>
            <UserLocale>zh-cn</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <LogonCount>3</LogonCount>
                <Username>Administrator</Username>
            </AutoLogon>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <NetworkLocation>Home</NetworkLocation>
                <ProtectYourPC>3</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
            </OOBE>
            <RegisteredOwner>天书使者</RegisteredOwner>
            <DisableAutoDaylightTimeSet>true</DisableAutoDaylightTimeSet>
            <DoNotCleanTaskBar>true</DoNotCleanTaskBar>
            <TimeZone>China Standard Time</TimeZone>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:d:/backup/win81_pr_x64_vl_office2013.wim#Win81_PR_X64_VL_Office2013" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

(2)个性设置自动应答文件示例
这个自动应答文件使系统自动以Afministrator登录,并且在首次登录时进行一些个性设置,就是留了两个接口,运行位于System32\目录下的两个批处理文件,Desktop_1.bat, Desktop_2.bat,有了这两个东西那大家都可以随心所欲了。当然在pwDD中功能10,封装前批处理会扫描批处理同级和下级目录中的Desktop_1.bat, Desktop_2.bat,把它们复制到系统System32\目录下。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>zh-cn</InputLocale>
            <SystemLocale>zh-cn</SystemLocale>
            <UILanguage>zh-cn</UILanguage>
            <UserLocale>zh-cn</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <LogonCount>3</LogonCount>
                <Username>Administrator</Username>
            </AutoLogon>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>%windir%\system32\Desktop_1.bat</CommandLine>
                    <Description>Desktop_1</Description>
                    <Order>1</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>%windir%\system32\Desktop_2.bat</CommandLine>
                    <Order>2</Order>
                    <Description>Desktop_2</Description>
                </SynchronousCommand>
            </FirstLogonCommands>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <NetworkLocation>Home</NetworkLocation>
                <ProtectYourPC>3</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
            </OOBE>
            <RegisteredOwner>天书使者</RegisteredOwner>
            <DisableAutoDaylightTimeSet>true</DisableAutoDaylightTimeSet>
            <DoNotCleanTaskBar>true</DoNotCleanTaskBar>
            <TimeZone>China Standard Time</TimeZone>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:d:/backup/win81_pr_x64_vl_office2013.wim#Win81_PR_X64_VL_Office2013" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

5、Desktop_1.bat&Desktop_2.bat示例源码
已经不是制作Win8.1PE了,仅仅为了批处理完整性。
这两个文件一般与自动应答文件放在同目录,便于pwDD复制到系统。
此批处理中留有接口调用自由天空驱动包安装驱动,建议选择比较稳定的版本。
(1)Desktop_1.bat
    @echo off&color 0a

echo Windows Registry Editor Version 5.00>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg
::不显示快捷方式到
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]>>%~dp0Custom_Win8_1.reg
echo "link"=hex:00,00,00,00>>%~dp0Custom_Win8_1.reg
echo.>>%~dp0\Custom_Win8_1.reg
::桌面显示计算机
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]>>%~dp0Custom_Win8_1.reg
echo "{20D04FE0-3AEA-1069-A2D8-08002B30309D}"=dword:00000000>>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg
::记事本默认自动换行
echo [HKEY_CURRENT_USER\Software\Microsoft\Notepad]>>%~dp0Custom_Win8_1.reg
echo "fWrap"=dword:00000001>>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg

::禁止注册表远程修改
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg]>>%~dp0Custom_Win8_1.reg
echo "RemoteRegAccess"=dword:00000001>>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg
::设置英文为默认输入法,微软拼音为第二输入法
echo [HKEY_CURRENT_USER\Keyboard Layout\Preload]>>%~dp0Custom_Win8_1.reg
echo "1"="00000409">>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg
echo "2"="00000804">>%~dp0Custom_Win8_1.reg
echo.>>%~dp0Custom_Win8_1.reg

::设置个人文档位置、下载文件位置
if exist d: (
  if exist D:\MyDoc (
    if exist D:\MyDoc\Download ( goto ExistDownload )
    md D:\MyDoc\Download
    goto ExistDownload
    )
  
  md D:\MyDoc
  md D:\MyDoc\Download
:ExistDownload
  echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]>>%~dp0Custom_Win8_1.reg
  echo "{374DE290-123F-4565-9164-39C4925E467B}"="D:\\MyDoc\\Download">>%~dp0Custom_Win8_1.reg
  echo "Personal"="D:\\MyDoc">>%~dp0Custom_Win8_1.reg
  echo.>>%~dp0Custom_Win8_1.reg
  echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]>>%~dp0Custom_Win8_1.reg
  echo "{374DE290-123F-4565-9164-39C4925E467B}"="D:\\MyDoc\\Download">>%~dp0Custom_Win8_1.reg
  echo "Personal"="D:\\MyDoc">>%~dp0Custom_Win8_1.reg
  echo.>>%~dp0Custom_Win8_1.reg
)


reg import %~dp0Custom_Win8_1.reg>nul 2>nul

del  /f /s /q  %~dp0Custom_Win8_1.reg>nul 2>nul
if exist %systemdrive%\Activitor ( copy /y  %windir%\system32\Desktop_1.bat %systemdrive%\Activitor>nul 2>nul&copy  /y %windir%\system32\Win8_SuspendOff.bat  %systemdrive%\Activitor>nul 2>nul&goto DelBat )
md %systemdrive%\Activitor>nul 2>nul
copy /y %windir%\system32\Desktop_1.bat %systemdrive%\Activitor>nul 2>nul
copy /y %windir%\system32\Win8_SuspendOff.bat  %systemdrive%\Activitor>nul 2>nul
:DelBat
if exist %systemdrive%\Activitor\WanDrv\WanDrv.exe start %systemdrive%\Activitor\WanDrv\WanDrv.exe
del  /f /s /q  %windir%\system32\Desktop_1.bat>nul 2>nul
del  /f /s /q  %windir%\system32\Win8_SuspendOff.bat>nul 2>nul

::第二种方法,直接添加或者修改,比第一种方法简单,但不利于保留.reg文件
::reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System  /v  "FilterAdministratorToken" /t reg_dword /d 1 /f>nul 2>nul
::reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System  /v  "LocalAccountTokenFilterPolicy" /t reg_dword /d 1 /f>nul 2>nul

exit

(2)Desktop_2.bat
修改OEM信息,娱乐而已。
@echo off&color 0a

echo Windows Registry Editor Version 5.00>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg]>>%~dp0Custom_Win8_2.reg
echo "RemoteRegAccess"=dword:00000001>>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg
set str=%random%
echo [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName] >>%~dp0Custom_Win8_2.reg
echo "ComputerName"="Marc-%str%" >>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName] >>%~dp0Custom_Win8_2.reg
echo "ComputerName"="Marc-%str%" >>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog] >>%~dp0Custom_Win8_2.reg
echo "ComputerName"="Marc-%str%" >>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters] >>%~dp0Custom_Win8_2.reg
echo "NV Hostname"="Marc-%str%" >>%~dp0Custom_Win8_2.reg
echo "Hostname"="Marc-%str%" >>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg

echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation] >>%~dp0Custom_Win8_2.reg
echo "Manufacturer"="Lenovo" >>%~dp0Custom_Win8_2.reg
echo "Model"="Custom By Marc" >>%~dp0Custom_Win8_2.reg
echo "SupportHours"="周一至周五的9:00~17:00" >>%~dp0Custom_Win8_2.reg
echo "SupportPhone"="801678/13002621678" >>%~dp0Custom_Win8_2.reg
echo.>>%~dp0Custom_Win8_2.reg

reg import %~dp0Custom_Win8_2.reg>nul 2>nul
del  /f /s /q  %~dp0Custom_Win8_2.reg>nul 2>nul
if exist %systemdrive%\Activitor ( copy  /y %windir%\system32\Desktop_2.bat %systemdrive%\Activitor>nul 2>nul&goto DelBat )
md %systemdrive%\Activitor>nul 2>nul
copy  /y %windir%\system32\Desktop_2.bat %systemdrive%\Activitor>nul 2>nul
:DelBat
del  /f /s /q  %windir%\system32\Desktop_2.bat>nul 2>nul
exit

6、顺带说下pwIP
在命令提示符下改IP地址,特别是在PE下改,挺麻烦的。这个批处理专用用于8.1/8/7或者PE下设置网卡IP,进行网络通断测试,在XP/03及对应PE下不行。
大家也可以修改下拿走使用。
@echo off&mode con cols=90
title 小型局域网IP设置小工具_马宝银倾力提供
color 0a
setlocal enabledelayedexpansion

rd %systemdrive%\users\Dir_Test>nul 2>nul
md %systemdrive%\users\Dir_Test>nul 2>nul||(Echo 请使用右键管理员身份运行&&Pause >nul&&Exit)
rd %systemdrive%\users\Dir_Test>nul 2>nul
echo.
echo 只适合中文系统,如果是Windows 英文版,此批处理无效!下面显示所有网卡配置信息。
echo.
@echo ------------------------------------------------------------------------------
echo 设置网络地址为192.168.0.X或192.168.1.X,请看清楚要对哪块网卡进行设置操作!
ipconfig -all
echo.
@echo ------------------------------------------------------------------------------
set    numNet=1
set /p numNet=输入网卡编号,不能操作虚拟网卡,默认第一块,不是请输入数字----
ipconfig -all>%temp%\ipconfig.txt
find "适配器" %temp%\ipconfig.txt>%temp%\tmpAdp.txt

set /a a=0
for /f  "skip=2 tokens=1,* delims= "  %%i in (%temp%\tmpAdp.txt) do (  
   set /a a+=1
   if !numNet!==!a! echo 你选择操作第!a!块网卡:%%j&&set NameNet=%%j
)
set NameNet=!NameNet:~,-1!

echo int>%temp%\tmpNet.txt
echo ip>>%temp%\tmpNet.txt

set    ipRange=0
set /p ipRange=默认192.168.0.X,如果是192.168.1.X,输入1,X为随机数,想自定义输入小写d----

if !ipRange!==d (
   set /p ipCustom=请输入定制IP,中间和前后不能有任何多余字符,如202.189.1.202----
   set /p MaskCustom=请输入定制子网掩码,中间和前后不能有任何多余字符,如255.255.255.0----
   set /p GateCustom=请输入定制网关,中间和前后不能有任何多余字符,如202.189.1.1----
   set /p DNSCustom=请输入定制DNS,中间和前后不能有任何多余字符,如202.189.1.1----
   echo set address "!NameNet!" static !ipCustom! !MaskCustom! !GateCustom! 1>>%temp%\tmpNet.txt
   echo set dns "!NameNet!" static !DNSCustom!>>%temp%\tmpNet.txt
   netsh -f %temp%\tmpNet.txt>nul 2>nul
   goto End
)

set /a ip=0
:SetIP
set /a ip=%random%%%254
if !ip!==0 goto SetIP
if !ip!==1 goto SetIP

if !ipRange!==0 echo set address "!NameNet!" static 192.168.0.!ip! 255.255.255.0 192.168.0.1 1>>%temp%\tmpNet.txt
if !ipRange!==0 echo set dns "!NameNet!" static 192.168.0.1>>%temp%\tmpNet.txt
if !ipRange!==1 echo set address "!NameNet!" static 192.168.1.!ip! 255.255.255.0 192.168.1.1 1>>%temp%\tmpNet.txt
if !ipRange!==1 echo set dns "!NameNet!" static 192.168.1.1>>%temp%\tmpNet.txt

netsh -f %temp%\tmpNet.txt>nul 2>nul

:End
cls
ipconfig -all
pause
回复

使用道具 举报

发表于 2014-2-6 13:55:32 | 显示全部楼层
支持,感谢分享。分享就是大善
回复

使用道具 举报

发表于 2014-2-9 17:52:26 来自手机 | 显示全部楼层
支持原创,顶一个
回复

使用道具 举报

发表于 2014-2-27 21:21:43 | 显示全部楼层
超牛
回复

使用道具 举报

发表于 2014-3-5 14:34:57 | 显示全部楼层
感谢分享。支持。
回复

使用道具 举报

发表于 2014-4-21 21:45:34 | 显示全部楼层
要学习一下了
回复

使用道具 举报

发表于 2014-4-22 03:55:51 | 显示全部楼层
好像很複雜,先標記起來有空再詳細研究看有什麼可以參考的
前陣子曾做過最最精簡的WinPE 5.0從Windows 8.1擷取.wim再加程式上去RUN
後來想說用個x64的跑看看結果因為少了Syswow64 系統跟msi一堆有的沒的 很多程式都不能跑
32bit的不能跑 只能跑純64bit的像Ghost64 Waterfox 要手工加載到可以跑32bit好像很麻煩要改Registry還沒研究到那段,老機器跑regedit 搜尋累死我24萬多筆record跑一次跑半天,簡單的PE跑備份 復原還行,如果要它上網也還行但一堆驅動除了網路之外其它如顯示音效都沒帶上來,只能抓抓檔案,連PPPoE都還要另外再改裝才會有,但我目前只用Windows 7, Windows 8/8.1有點跑不動.
回复

使用道具 举报

发表于 2014-4-22 12:07:11 | 显示全部楼层
给跪了
回复

使用道具 举报

发表于 2014-4-23 20:49:27 | 显示全部楼层
支持!wim81的dism比以前的版本强大很多!
回复

使用道具 举报

发表于 2014-5-4 23:52:15 | 显示全部楼层
楼主的好几帖貌似重复了。。
回复

使用道具 举报

发表于 2014-5-5 01:16:11 | 显示全部楼层
码这么多字要浪费很多精力和时间 多谢了
回复

使用道具 举报

发表于 2014-5-19 17:33:00 | 显示全部楼层
发出来给测试一下啊。。
回复

使用道具 举报

发表于 2014-6-7 10:02:03 | 显示全部楼层
支持楼主的分享。
回复

使用道具 举报

发表于 2014-7-29 18:30:47 | 显示全部楼层
支持一下,做人要厚道,回复是本分。
回复

使用道具 举报

发表于 2014-7-30 22:50:32 | 显示全部楼层
真正的功夫 支持 到底
回复

使用道具 举报

发表于 2015-9-17 11:11:12 | 显示全部楼层
无忧启动论坛 原创有你而精彩
回复

使用道具 举报

发表于 2015-12-8 20:17:22 | 显示全部楼层
感谢版主分享
回复

使用道具 举报

发表于 2015-12-8 20:56:08 | 显示全部楼层
楼主这批处理编的,真长……
回复

使用道具 举报

发表于 2016-1-14 13:53:37 | 显示全部楼层
好帖子,一定要赞一个!
回复

使用道具 举报

发表于 2017-12-14 23:36:06 | 显示全部楼层
没看win10的帖子,忙什么去了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表