|
请问在W7下挂载IMG中的wim镜像时,所需imdisk盘空间计算中,*1.2是怎么来的?
经过我的反复试验,这个1.2倍是不够的,而且您还未考虑不同Imdisk盘大小时NTFS系统占用的空间,另外您的这个LDIMDSK小程序还不支持扩展Imdisk盘,如果从低模式向高模式挂载的话会失败,这里我把我改进的代码发给您瞧瞧,我根据自己的需要模块名称和数目有些改变,另外还有一个专门算NTFS系统占用大小的过程,同时支持增加调整IMdisk盘空间功能
- _SUB CREATIMDISK `建立挂载盘(Win7PE使用)
- FIND $%BootOS%=W7,!TEAM RAMD ImDisk,L2,FAT,%MountDrv%,ImDisk|EXIT _SUB
- FDRV MDTmp=%MountDrv%
- FIND $%MDTmp%=%MountDrv%,!TEAM PATH %MountDrv%|EXIT _SUB
- CALL GETIMDISKSIZE
- ENVI LOADMODE0=%LOADMODE%
- ENVI MountDrv0=%MountDrv%
- ENVI MaxNum=0
- IFEX MEM>%iSize1%,ENVI MaxNum=1
- IFEX MEM>%iSize2%,ENVI MaxNum=2
- IFEX MEM>%iSize3%,ENVI MaxNum=3
- IFEX $%LOADMODE%>%MaxNum%,ENVI $LOADMODE=%MaxNum%
- IFEX $%LOADMODE%=3,CALC #ImdSize=%iSizec3% + %NTFSDiskLog3%
- IFEX $%LOADMODE%=2,CALC #ImdSize=%iSizec2% + %NTFSDiskLog2%
- IFEX $%LOADMODE%=1,CALC #ImdSize=%iSizec1% + %NTFSDiskLog1%
- IFEX $%LOADMODE%=0,ENVI ImdSize=4
- IFEX $%LOADMODE%<%LOADMODE0%,FIND $%SELECTMODE%=手动选择,CALL IFSetMountDrv
- FIND $%MountDrv%=%MountDrv0%,RAMD ImDisk,L%ImdSize%,NTFS,%MountDrv%,ImDisk!ENVI $LOADMODE=%LOADMODE0%
- IFEX $%LOADMODE%<%LOADMODE0%,ENVI SELECTMODE=自动降级
- _END
- _SUB ADJIMDISK `扩展挂载盘(Win7PE使用)
- FIND $%BootOS%=W7,!EXIT _SUB
- FDRV MDTmp=%MountDrv%
- FIND $%MDTmp%=%MountDrv%,!EXIT _SUB
- CALL GETIMDISKSIZE
- ENVI LOADMODE0=%LOADMODE%
- ENVI MountDrv0=%MountDrv%
- IFEX $%LOADMODE%=3,CALC #ImdSize=%iSizec3% + %NTFSDiskLog3%
- IFEX $%LOADMODE%=2,CALC #ImdSize=%iSizec2% + %NTFSDiskLog2%
- IFEX $%LOADMODE%=1,CALC #ImdSize=%iSizec1% + %NTFSDiskLog1%
- IFEX $%LOADMODE%=0,ENVI ImdSize=4
- IFEX $%OLDMODE%=3,CALC #ImdSizeo=%iSizec3% + %NTFSDiskLog3%
- IFEX $%OLDMODE%=2,CALC #ImdSizeo=%iSizec2% + %NTFSDiskLog2%
- IFEX $%OLDMODE%=1,CALC #ImdSizeo=%iSizec1% + %NTFSDiskLog1%
- IFEX $%OLDMODE%<1,ENVI ImdSizeo=4
- CALC #dSize=%ImdSize% - %ImdSizeo% + %iSysBaseMem%
- IFEX MEM>%dSize%,TEAM RAMD ImDisk,L%ImdSize%,NTFS,%MountDrv%,ImDisk|WAIT 2000
- ENVI MaxNum=0
- FIND %MountDrv%\>%iSizec1%,ENVI MaxNum=1
- FIND %MountDrv%\>%iSizec2%,ENVI MaxNum=2
- FIND %MountDrv%\>%iSizec3%,ENVI MaxNum=3
- IFEX $%LOADMODE%>%MaxNum%,ENVI $LOADMODE=%MaxNum%
- IFEX $%LOADMODE%<%LOADMODE0%,FIND $%SELECTMODE%=手动选择,CALL IFSetMountDrv
- FIND $%MountDrv%=%MountDrv0%,!ENVI $LOADMODE=%LOADMODE0%
- IFEX $%LOADMODE%<%LOADMODE0%,ENVI SELECTMODE=自动降级
- _END
- _SUB GETIMDISKSIZE
- CALC #iSize1=%iSysBaseMem% + %iSizeBAS%
- CALC #iSize2=%iSize1% + %iSizeEXT%
- CALC #iSize3=%iSize2% + %iSizeULT%
- CALC #iSizec1=%iSize1% - %iSysBaseMem%
- CALC #iSizec2=%iSize2% - %iSysBaseMem%
- CALC #iSizec3=%iSize3% - %iSysBaseMem%
- CALC #NTFSDiskLog1=ceil(%iSizec1%/40)*2+10
- CALC #NDLTemp=ceil(%iSizec1%/40)*40-%iSizec1%
- IFEX $%NDLTemp%<%NTFSDiskLog1%,CALC #NTFSDiskLog1=%NTFSDiskLog1%+2
- CALC #NTFSDiskLog2=ceil(%iSizec2%/40)*2+10
- CALC #NDLTemp=ceil(%iSizec2%/40)*40-%iSizec2%
- IFEX $%NDLTemp%<%NTFSDiskLog2%,CALC #NTFSDiskLog2=%NTFSDiskLog2%+2
- CALC #NTFSDiskLog3=ceil(%iSizec3%/40)*2+10
- CALC #NDLTemp=ceil(%iSizec3%/40)*40-%iSizec3%
- IFEX $%NDLTemp%<%NTFSDiskLog3%,CALC #NTFSDiskLog3=%NTFSDiskLog3%+2
- _END
- ENVI $WIM1=BAS `模式1文件名
- ENVI $WIM2=EXT `模式2文件名
- ENVI $WIM3=ULT `模式3文件名
- ENVI $WIMCOM=COM `通用模块文件夹
- FIND $%BootOS%=W7,ENVI $WIMDRV=DR7!ENVI $WIMDRV=DRV `驱动包文件夹
- IFEX %WimDir%\%WIM1%.WIM,ENVI ExistWIM1=0!ENVI ExistWIM1=-2 `文件是否存在(注意=0表示存在,<0表示不存在)
- IFEX %WimDir%\%WIM2%.WIM,ENVI ExistWIM2=0!ENVI ExistWIM2=-2
- IFEX %WimDir%\%WIM3%.WIM,ENVI ExistWIM3=0!ENVI ExistWIM3=-2
- IFEX %WimDir%\%WIMDRV%,ENVI ExistWIMDRV=0!ENVI ExistWIMDRV=-2
- IFEX %WimDir%\%WIMCOM%,ENVI ExistWIMCOM=0!ENVI ExistWIMCOM=-2
- ENVI iSysBaseMem=64
- ENVI iSizeBAS=95
- ENVI iSizeEXT=121
- ENVI iSizeULT=195
- `建立Y盘
- IFEX %MountDrv%\,CALL ADJIMDISK!CALL CREATIMDISK
复制代码 |
|