|
本帖最后由 datbik189 于 2019-7-22 15:53 编辑
看到你们show脚本,我也发一下,
使用临时文件的:
ENVI^ ENVIMODE=1
TEAM SET$ &NL=D A|SET$ &TAB=9|MSTR &FILE=1,8,%RANDOM%|SET &FILE="%TEMP%\%&FILE%.TXT"|SET &END=DISKPART> %&NL%DISKPART> |STRL &END_LEN=%&END%
TEAM DATE &T1 UPTIME|EXEC -PID:&PID *CMD.EXE /K DISKPART.EXE>%&FILE%&DEL %&FILE%&EXIT
THREAD* -HERE -TID:&TID LOOP #1=1,TEAM FIND --WID*@. &V|SET &V1=%&TAB%%&PID%%&TAB%|LOAD #999*命令_FIND.EXE &V "" &V1|MSTR * &WID=<2>&V|CALC -BASE=16 &WID=%&WID%|SET-RET &WID=%&WID%|IFEX $%&WID%>0,EXIT LOOP
WAIT 1500 *=%&TID%
IFEX $%&WID%>0,ENVI @@SENDMSG=%&WID%;0X102;0XD!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错|EXIT FILE
CALL @CMD_WIN
_SUB CMD_WIN,H410W600,DISKPART,CALL RUN EXIT
EDIT-| &CMD_EDIT1,L10T295H70W520,,,0X20
EDIT-| &CMD_EDIT,L10T10H280W580,,,0X864
ENVI @&CMD_EDIT.READONLY=1
LOOP #1=1,TEAM IFEX %&FILE%,!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错||KILL \||EXIT FILE|READ %&FILE%,**,&RET|MSTR * &V=-1,%&END_LEN%,&RET|IFEX*C '%&END%'='%&V%',TEAM SED -EX &V=0,(%&NL%DISKPART> )+,%&NL%DISKPART> ,&RET||DATE &T2 UPTIME||CALC &T3=%&T2%-%&T1%||ENVI @&CMD_EDIT=%&V% ( 启动耗时 %&T3% ms )%&NL%%&NL%DISKPART> ||EXIT LOOP
SET-RAW &CMD=TEAM SET &RET_NEW=|DATE &T4 UPTIME|FORX *NL &CMD_EDIT1,&COMMAND,FIND $%&COMMAND%=,!TEAM DATE &T1 UPTIME||CALL RUN &COMMAND||DATE &T2 UPTIME||CALC &T3=%&T2%-%&T1%||ENVI @&CMD_EDIT=%&CMD_EDIT%%&COMMAND% ( 耗时 %&T3% ms )%&NL%%&RET_NEW%|FIND $%&RET_NEW%=,!TEAM CALC &T5=%&T2%-%&T4%||ENVI @&CMD_EDIT=%&CMD_EDIT% ( 总耗时 %&T5% ms )%&NL%%&NL%DISKPART> |IFEX %&FILE%,!KILL \
ITEM &CMD_BUT,L530T329H20W50,RUN,TEAM ENVI @&CMD_BUT.ENABLE=0|%&CMD%|ENVI @&CMD_BUT.ENABLE=1
_END
_SUB RUN
FIND $%1=,EXIT _SUB
FIND $%1=EXIT,TEAM SET &CHAR=EXIT%&NL%|LOAD #999*命令_宽字符 &CHAR|FORX * %&CHAR%,&CHAR1,ENVI @@SENDMSG=%&WID%;0X102;0X%&CHAR1%|EXIT _SUB
TEAM READ %&FILE%,**,&RET|SET &RET_=%RET%|^SET &CHAR=%%%~1%%%&NL%%&NL%|IFEX*C '%&CHAR%'='%&NL%%&NL%',EXIT _SUB
TEAM LOAD #999*命令_宽字符 &CHAR|FORX * %&CHAR%,&CHAR1,ENVI @@SENDMSG=%&WID%;0X102;0X%&CHAR1%
LOOP #1=1,TEAM IFEX %&FILE%,!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错||EXIT _SUB|READ %&FILE%,**,&RET|MSTR * &CHAR=-1,%&END_LEN%,&RET|IFEX*C ['%&END%'='%&CHAR%' & '%&RET%'<>'%&RET_%'],EXIT LOOP
TEAM READ -*,-1,&LINE,&RET_|CALC &LINE=%&LINE%+1|READ -*,%&LINE%+0,&RET_NEW,&RET|SED -EX &RET_NEW=0,(%&NL%DISKPART> )+,%&NL%DISKPART> ,&RET_NEW|SET-RET &RET_NEW=%&RET_NEW%
_END
不使用临时文件的:
ENVI^ ENVIMODE=1
TEAM SET$ &NL=D A|SET$ &TAB=9|SET &END=DISKPART> %&NL%DISKPART> |STRL &END_LEN=%&END%
TEAM DATE &T1 UPTIME|THREAD* -HERE CALL @START
THREAD* -HERE -TID:&TID LOOP #1=1,TEAM FIND --WID*@. &V|SET &V1=%&TAB%%&PID%%&TAB%|LOAD #999*命令_FIND.EXE &V "" &V1|MSTR * &WID=<2>&V|CALC -BASE=16 &WID=%&WID%|SET-RET &WID=%&WID%|IFEX $%&WID%>0,EXIT LOOP!WAIT 100
WAIT 1500 *=%&TID%
IFEX $%&WID%>0,ENVI @@SENDMSG=%&WID%;0X102;0XD!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错|EXIT FILE
CALL @CMD_WIN
_SUB CMD_WIN,H410W600,DISKPART,CALL RUN EXIT
EDIT-| &CMD_EDIT1,L10T295H70W520,,,0X20
EDIT-| &CMD_EDIT,L10T10H280W580,,,0X864
ENVI @&CMD_EDIT.READONLY=1
LOOP #1=1,TEAM FIND $%PROCEED%=,!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错||KILL \||EXIT LOOP|MSTR * &V=-1,%&END_LEN%,&RET|IFEX*C '%&END%'='%&V%',TEAM SED -EX &V=0,(%&NL%DISKPART> )+,%&NL%DISKPART> ,&RET||DATE &T2 UPTIME||CALC &T3=%&T2%-%&T1%||ENVI @&CMD_EDIT=%&V% ( 启动耗时 %&T3% ms )%&NL%%&NL%DISKPART> ||EXIT LOOP
SET-RAW &CMD=TEAM SET &RET_NEW=|DATE &T4 UPTIME|FORX *NL &CMD_EDIT1,&COMMAND,FIND $%&COMMAND%=,!TEAM DATE &T1 UPTIME||CALL RUN &COMMAND||DATE &T2 UPTIME||CALC &T3=%&T2%-%&T1%||ENVI @&CMD_EDIT=%&CMD_EDIT%%&COMMAND% ( 耗时 %&T3% ms )%&NL%%&RET_NEW%|FIND $%&RET_NEW%=,!TEAM CALC &T5=%&T2%-%&T4%||ENVI @&CMD_EDIT=%&CMD_EDIT% ( 总耗时 %&T5% ms )%&NL%%&NL%DISKPART> |FIND $%PROCEED%=,!KILL \
ITEM &CMD_BUT,L530T329H20W50,RUN,TEAM ENVI @&CMD_BUT.ENABLE=0|%&CMD%|ENVI @&CMD_BUT.ENABLE=1
_END
_SUB START,#,CATCH,
TIME -T:1 &TIMER1,100,TEAM EXEC* -PID:&PID @&RET=*DISKPART.EXE|ENVI PROCEED=0|KILL \
TIME &TIMER2,50,@TEAM @SET-RET2 &PID=%&PID%|@SET-RET2 &RET=%&RET%
EDIT-| &RET,L10T10H180W380
_END
_SUB RUN
FIND $%1=,EXIT _SUB
FIND $%1=EXIT,TEAM SET &CHAR=EXIT%&NL%|LOAD #999*命令_宽字符 &CHAR|FORX * %&CHAR%,&CHAR1,ENVI @@SENDMSG=%&WID%;0X102;0X%&CHAR1%|EXIT _SUB
TEAM SET &RET_=%RET%|^SET &CHAR=%%%~1%%%&NL%%&NL%|IFEX*C '%&CHAR%'='%&NL%%&NL%',EXIT _SUB
TEAM LOAD #999*命令_宽字符 &CHAR|FORX * %&CHAR%,&CHAR1,ENVI @@SENDMSG=%&WID%;0X102;0X%&CHAR1%
LOOP #1=1,TEAM FIND $%PROCEED%=,!TEAM MESS.+ICON0 DISKPART.EXE 未启动!@出错||EXIT LOOP|MSTR * &CHAR=-1,%&END_LEN%,&RET|IFEX*C ['%&END%'='%&CHAR%' & '%&RET%'<>'%&RET_%'],EXIT LOOP
TEAM READ -*,-1,&LINE,&RET_|CALC &LINE=%&LINE%+1|READ -*,%&LINE%+0,&RET_NEW,&RET|SED -EX &RET_NEW=0,(%&NL%DISKPART> )+,%&NL%DISKPART> ,&RET_NEW|SET-RET &RET_NEW=%&RET_NEW%
_END
|
|