| 
 | 
看似是 PECMD 的代码,因为很少接触,大家觉得呢? 
- @TEAM ENVI^ EnviMode=1| ENVI^ ForceLocal=1
 
 - TEAM SET$ &NL=0d 0a| SET$ &TAB=09
 
 - ENVI &::MEXE=%&CurDir%\snapshot.exe
 
 - IFEX $%&bX64%=0,! IFEX %&CurDir%\snapshot64.exe,ENVI &::MEXE=%&CurDir%\snapshot64.exe
 
 - ENVI ?,&DSVer=FVER,%&::MEXE%
 
  
- _SUB WIN1,W500H450,Drive Snapshot 分区备份还原,,,
 
 -     GROU GROU1,L10T5W475H55,
 
 -     LABE LABE1,L20T19W145H16,1. 请选择将要执行的操作:,,,
 
 -     RADI RADI1,L100T35W85H20,备份分区(&B),CALL ControlSwitch,1,0
 
 -     RADI RADI2,L300T35W85H20,还原分区(&R),CALL ControlSwitch,0,0
 
 -     
 
 -     GROU GROU2,L10T65W475H205,
 
 -     LABE LABE2,L18T79W350H18,2. 请选择一个目标分区:,,,
 
 -     IMAG IMAG2,L457T75W20H20,shell32.dll#238,CALL OnTable,
 
 -     ENVI @IMAG2.MSG=0x02A1:CALL ControlTip "点击此处以刷新磁盘分区信息"
 
 -     ENVI @IMAG2.MSG=0x02A3:TIPS -
 
 -     SET &&TITLE=+40:序号%&TAB%+40:盘符%&TAB%=70:总大小%&TAB%=70:可用空间%&TAB%+60:分区类型%&TAB%+60:文件系统%&TAB%95:卷标
 
 -     TABL TABL2,L18T97W460H165,%&TITLE%,,0x10040
 
 -     
 
 -     GROU GROU3,L10T275W475H65,
 
 -     LABE LABE3,L18T289W350H18,3. 请选择映像文件路径:,,,
 
 -     LIST LIST3,L20T310W410H20,,,,0x4
 
 -     LIST LIST4,L20T310W410H20,,,,
 
 -     ITEM ITEM3,L440T309W35H22,...,CALL PickImageFile,,
 
 -     
 
 -     ITEM ITEM4,L350T355W60H30,执行,CALL StartingBackupRestore,
 
 -     ITEM ITEM5,L425T355W60H30,退出,EXIT FILE,
 
 -     
 
 -     LABE+ ,L-1T400W500H1,,,
 
 -     LABE -left LABE4,L5T405W350H12,,,
 
 -     FIND $%&DSVer%=,! LABE -right LABE5,L385T405W105H12,snapshot %DSVer%,EXEC %&::MEXE%,0xFF0000,
 
 -     
 
 -     CALL Initialize
 
 - _END
 
  
- CALL @WIN1
 
  
- _SUB OnTable
 
 -     ENVI &TableInfo=
 
 -     PART list disk ,&AllDisks
 
 -     FORX * %&AllDisks%,&DiskNum,
 
 -     {
 
 -         PART list part %&DiskNum%,&AllParts
 
 -         FORX * %&AllParts%,&PartNum,
 
 -         {
 
 -             IFEX $%&PartNum%>0,! EXIT -
 
 -             TEAM ENVI &ID=| &DL=| ENVI &VS=| ENVI &VFS=| ENVI &TP=| ENVI &FS=| ENVI &VL=| ENVI &Unit1=| ENVI &Unit2=
 
 -             ENVI &ID=%&DiskNum%:%&PartNum%
 
 -             PART list part %&DiskNum%:%&PartNum%,&PartInfo
 
 -             MSTR &TP,&VS,&DL=<3><5><8>%PartInfo%
 
 -             IFEX \\?\Harddisk%&DiskNum%Partition%&PartNum%\=?,&VFS
 
 -             FDRV -vol &VL,&FS=\\?\Harddisk%&DiskNum%Partition%&PartNum%
 
 -             IFEX $%&VS%<1024,ENVI &Unit1=Byte
 
 -             IFEX $%&VS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VS = %&VS% / 1024 ##2| ENVI &Unit1=KB
 
 -             IFEX $%&VS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VS = %&VS% / 1024 ##2| ENVI &Unit1=MB
 
 -             IFEX $%&VS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VS = %&VS% / 1024 ##2| ENVI &Unit1=GB
 
 -             IFEX $%&VS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VS = %&VS% / 1024 ##2| ENVI &Unit1=TB
 
 -             IFEX $%&VFS%<1024,ENVI &Unit2=Byte
 
 -             IFEX $%&VFS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VFS = %&VFS% / 1024 ##2| ENVI &Unit2=KB
 
 -             IFEX $%&VFS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VFS = %&VFS% / 1024 ##2| ENVI &Unit2=MB
 
 -             IFEX $%&VFS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VFS = %&VFS% / 1024 ##2| ENVI &Unit2=GB
 
 -             IFEX $%&VFS%>1024,TEAM CALC [        DISCUZ_CODE_0        ]amp;VFS = %&VFS% / 1024 ##2| ENVI &Unit2=TB
 
 -             FIND $%TP%<>GPT,ENVI &TP=MBR
 
 -             ENVI &TableInfo=%&TableInfo%%&ID%%&TAB%%&DL%%&TAB%%&VS%%&Unit1%%&TAB%%&VFS%%&Unit2%%&TAB%%&TP%%&TAB%%&FS%%&TAB%%&VL%%NL%
 
 -         }
 
 -     }
 
 -     ENVI @TABL2.Val=1*#;%&TableInfo%
 
 - _END
 
  
- _SUB ControlTip
 
 -     TEAM TIPS -| ENVI &ShowContent=
 
 -     ENVI &ShowContent=%~1
 
 -     ENVI @@Cur=?&CurXM;&CurYM
 
 -     TIPS ,%&ShowContent%,,0,@AL%&CurXM%T%&CurYM%
 
 - _END
 
  
- _SUB ControlSwitch
 
 -     ENVI @LIST3.Visible=%RADI1.Check%
 
 -     ENVI @LIST4.Visible=%RADI2.Check%
 
 - _END
 
  
- _SUB Initialize
 
 -     CALL OnTable
 
 -     CALL ControlSwitch
 
 -     THREAD* CALL ScanImageFiles
 
 - _END
 
  
- _SUB ScanImageFiles
 
 -     ENVI @LABE4=正在扫描本地磁盘上的 SNA 映像文件...
 
 -     FORX /S:3 \*.sna,&ImageFiles,0,ENVI @LIST4.ADD=%&ImageFiles%
 
 -     FIND $%LABE4%=正在扫描本地磁盘上的 SNA 映像文件...,ENVI @LABE4=准备就绪
 
 - _END
 
  
- _SUB PickImageFile
 
 -     IFEX $%RADI1.Check%=1,
 
 -     {
 
 -         BROW &ImageFile,&,请指定用于保存备份的映像文件,SNA 映像文件(*.sna)|*.sna|,0x802
 
 -         FIND $%&ImageFile%=,!
 
 -         {
 
 -             FEXT &FileExt=%&ImageFile%
 
 -             FIND $%&FileExt%=,ENVI @LIST3.ADDSEL=%&ImageFile%.sna! ENVI @LIST3.ADDSEL=%&ImageFile%
 
 -         }
 
 -     }
 
 -     IFEX $%RADI2.Check%=1,
 
 -     {
 
 -         BROW &ImageFile,,请指定用于还原备份的映像文件,SNA 映像文件(*.sna)|*.sna|,0x1000
 
 -         FIND $%&ImageFile%=,! ENVI @LIST4.ADDSEL=%&ImageFile%
 
 -     }
 
 - _END
 
  
- _SUB StartingBackupRestore
 
 -     TEAM ENVI &DrvLtr=| ENVI &DiskNum=| ENVI &PartNum=| ENVI &BParam=| ENVI &OParam=
 
 -     ENVI @TABL2.Sel=?&&Sel
 
 -     ENVI @TABL2.Val=?%Sel%.1;&DiskPart
 
 -     ENVI @TABL2.Val=?%Sel%.2;&DrvLtr
 
 -     MSTR -delims:: &DiskNum,&PartNum=<1><2>%&DiskPart%
 
 -     CALC #&DiskNum = %&DiskNum% + 1
 
 -     IFEX $%RADI1.Check%=1,
 
 -     {
 
 -         IFEX $1>%&Sel%,TEAM MESS+icon6 您尚未选择要备份的源分区!@错误 #OK *-5000| EXIT _SUB
 
 -         FIND $%LIST3%=,TEAM MESS+icon6 保存备份映像的路径不能为空!@错误 #OK *-5000| EXIT _SUB
 
 -         ENVI &OParam=--usevss
 
 -         FIND $%&DrvLtr%=,ENVI &BParam=HD%&DiskNum%:%&PartNum% "%LIST3%"!
 
 -         {
 
 -             ENVI &BParam=%&DrvLtr% "%LIST3%"
 
 -             MESS+icon0 是否要在备份前对源分区执行 CHKDSK /F (修复磁盘错误)?@检查磁盘 #YN $Y
 
 -             FIND $%YESNO%=YES,EXEC -wait -hide CHKDSK /F %&DrvLtr%
 
 -         }
 
 -         TEAM ENVI @LABE4=正在备份分区,请稍等...| ENVI @ITEM4.Enable=0| ENVI @ITEM5.Enable=0
 
 -         EXEC -wait %&::MEXE% %&BParam% %&OParam%
 
 -         ENVI @LIST4.ADDSEL=%LIST3%
 
 -     }
 
 -     IFEX $%RADI2.Check%=1,
 
 -     {
 
 -         IFEX $1>%&Sel%,TEAM MESS+icon6 您尚未选择要还原的目标分区!@错误 #OK *-5000| EXIT _SUB
 
 -         IFEX %LIST4%,! TEAM MESS+icon6 您尚未指定映像文件或指定的映像文件不存在!@错误 #OK *-5000| EXIT _SUB
 
 -         FIND $%&DrvLtr%=,ENVI &BParam="%LIST4%" HD%&DiskNum%:%&PartNum%! ENVI &BParam="%LIST4%" %&DrvLtr%
 
 -         MESS+icon1 您确定要将映像内容还原到"驱动器 %&DiskPart%"?@还原确认 #OKC $C
 
 -         FIND $%YESNO%=CANCEL,EXIT _SUB
 
 -         TEAM ENVI @LABE4=正在还原分区,请稍等...| ENVI @ITEM4.Enable=0| ENVI @ITEM5.Enable=0
 
 -         EXEC -wait %&::MEXE% %&BParam%
 
 -     }
 
 -     CALL OnTable
 
 -     TEAM ENVI @LABE4=准备就绪| ENVI @ITEM4.Enable=1| ENVI @ITEM5.Enable=1
 
 - _END
 
  复制代码 
 
 |   
 
 
 
 |