本帖最后由 chiannet 于 2021-8-7 18:56 编辑
这是我根据
https://github.com/manatails/uefiseven
编写的pecmd批处理,适用于USBOS下用CGI、Winntsetup、Dism、Dism++等工具安装(释放)64位Windows 7到本地硬盘后、满足下述3个条件的情况下:
1、以UEFI启动;
2、机器已丧失CSM支持的;
3、存在卡四叶草的问题;
重启PE之前,在PE下服用。建议用“CN_X86_X64_Win7+2008_R2_6BEA0DE2.ESD”测试,
可以拿1号、2号、5号、6号映像来测试,优选1号或5号进行测试。
- LSTR W=2,%WinDir%
- FIND $%W%=X:,!TEAM MESS+icon7 \n\n\n请在PECMD.EXE版本2012以上的PE下执行本程序!\n @发生严重错误:错误环境! #Y *10000 $Y|EXIT FILE
- MESS+icon4 \n\n\n1、不再支持Legacy BIOS引导;UEFI不再包含CSM选项;\n\n2、UEFI启动Windows 7存在卡四叶草的问题。\n\n----------------------------------------------------\n\n 按“是Y”继续,按“否N”退出。\n\n----------------------------------------------------@请核查本机是否同时满足下列状况? #YN *30000 $N
- FIND $%YESNO%=NO,EXIT FILE
- IFEX bootx64.efi,
- {
- HASH bootx64.efi,H,CRC32
- FIND $%H%=A51EDFE4,!
- {
- MESS+icon1 \n\n 所需核心文件校验失败!\n\n按“是Y”继续,按“否N”退出。@检测到文件错误! #YN *10000 $N
- FIND $%YESNO%=NO,EXIT FILE
- }
- }!
- {
- MESS+icon7 \n\n\n 所需核心文件丢失!\n @发生严重错误! #Y *10000 $Y
- EXIT FILE
- }
- ENVI WI=
- // 变量WI用于记录Windows所在盘符目录(例如D:\Windows)
- FORX * Windows Win Win7 Windows7 WinD7 W7,&W,
- {
- FORX \%&W%\SysWOW64\cmd.exe,&C,0,
- {
- FDRV &FD=%&C%
- FIND $%&FD%=X:,!
- {
- SITE ?&V=FVER,%&C%
- LPOS &i=6.1.760,1,%&V%
- FIND #%&i%>0,
- {
- PART -HEXTP -FILL -RAW LIST DRV %&FD%,&V
- MSTR &TY=<3>%&V%
- FIND $%&TY%=DRIVE_FIXED,TEAM ENVI WI=%&FD%\%&W%|EXIT FORX
- }
- }
- }
- FIND $%WI%=,!EXIT FORX
- }
- FIND $%WI%=,TEAM MESS+icon7 \n\n\n未发现硬盘上的64位Windows 7!\n @发生严重错误! #Y *10000 $Y|EXIT FILE
- ENVI U=UefiSeven.
- ENVI V=\EFI\Boot\
- ENVI S=\EFI\Microsoft\Boot\
- ENVI W=%S%bootmgfw.
- ENVI X=%V%bootx64.
- ENVI O=original.efi
- ENVI D=
- CALL FESP
- FIND $%D%=,
- {
- FORX * a b d e f g h i j k l m n o p q r s t u v w z,&D,
- {
- IFEX %&D%:\,!
- {
- ENVI MO=%CURDIR%\MountVol.EXE
- FORX %WinDir%\SYSTEM32\MountVol.EXE,&M,1,
- {
- SITE ?&V=FVER,%&M%
- LPOS &i=.,1,%&V%
- CALC &J=%&i%-1
- LSTR &V1=%&J%,%&V%
- CALC &J=%&i%+1
- MSTR &V2=%&J%,1,%&V%
- ENVI &V2=%&V1%%&V2%
- FIND #%&V2%>61,ENVI MO=%&M%
- }
- EXEC =!%MO% %&D%: /s
- EXIT FORX
- }
- }
- CALL FESP
- }
- FIND $%D%=,TEAM MESS+icon7 \n\n\n未找到UEFI启动64位Windows 7所必须EFI分区!\n @发生严重错误!#Y *10000 $Y|EXIT FILE
- FORX * %D%%W% %D%%X%,AA,
- {
- FORX %AA%原版efi,BB,1,
- {
- FILE %AA%efi
- FILE %AA%%O%
- IFEX %D%%X%%O%,!FILE %BB%=>%D%%X%%O%
- FILE %BB%->%AA%%O%
- }
- IFEX %AA%%O%,FILE %AA%efi!FILE %AA%efi->%AA%%O%
- FILE bootx64.efi=>%AA%efi
- }
- ENVI V=%D%%V%%U%verbose
- ENVI S=%D%%S%%U%skiperrors
- FILE %U%verbose=>%V%
- FILE %U%skiperrors=>%S%
- IFEX %V%,!WRIT %V%,+0,
- IFEX %S%,!WRIT %S%,+0,
- MESS 已完成修订!
- EXIT FILE
- Chiannet 20210806
- _SUB FESP
- FORX !%X%efi,&A,0,
- {
- ENVI D=
- FDRV &FD=%&A%
- FORX %&FD%%W%efi,&B,1,
- {
- PART -HEXTP -FILL -RAW LIST DRV %&FD%,&V
- MSTR &TY=<3>%&V%
- FIND $%&TY%=DRIVE_FIXED,
- {
- PART LIST DRV %&FD%,&V2
- MSTR &TY=<2>%&V2%
- FIND $%&TY%=C12A7328-F81F-11D2-BA4B-00A0C93EC93B,
- {
- ENVI D=%&FD%
- }!
- {
- FORX * EE EF 16 1B 1C 1E,&F,FIND $%&TY%=%&F%,TEAM ENVI D=%&FD%|EXIT FORX
- }
- }
- }
- FIND $%D%=,!EXIT _SUB
- }
- _END
复制代码
|