|
看似是 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
复制代码
|
|