#code=936 //GBK=936 BIG5=950 ASCII=0(default) ## ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ Welcome to use PECMD2012 - WinPE Commander,a powerful WinPE command interpreter! ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║PECMD --- XCMD V2.2 Perfect Ver.More commands like CALL,HOTK and FBWF are added on the basis of ║ ║ XCMD V2.2,with many thanks to Yonsm. ║ ║PECMD2012 Official website: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1 ║ ║PECMD2012 NonCopyRight,any individual or organization(including commercial one) can use and modify it ║ ║ freely and consult the author for technology. ║ ║PECMD2012 Rebuilt with the code of PECMD2.4,help document sorted by 988668 @May 10,2010(append. behind)║ ║PECMD2012 This document was translated into English by ddsony on April 3,2015. ║ ╠════╤══════════════════════════════════════════════════════════════════════════════════════════════════╣ ║VER │♫PECMD v2012.1.88 fix ║ ╠════╪══════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │◙Short,refined and runs quickly;extremely powerful in-built with many commands,including some ║ ║ │ common extended setting commands and capable of calling external EXE and DLL functions. ║ ║FEAT│◙Command line params and config file in unified format are supported,and login can be totally ║ ║ │ controlled by using and modifying the INI file. ║ ║URES│◙Modularized and structured script config file is supported,in which entire-row and end-of-row ║ ║ │ notes are permitted as well as TOL space indent. ║ ╠════╪══════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │ѺUse command line params,eg:To set environment variable,execute"PECMD.EXE ENVI $PPPoE=OK". ║ ║ │ѺUse config file,eg:"PECMD.EXE LOAD %SystemRoot%\PECMD.INI". ║ ║ │ѺRunning PECMD without any param will display this help document.For more,please refer to "HELP". ║ ║ │ѺCommand line params support environment variable interpretation(like"%TEMP%\X.TXT"); ║ ║ │ Command line is not case sensitive;The param in "<>" is indispensible,while "[]" optional. ║ ║USAG│ѺNotes are disabled in command line mode(not executed by LOAD) while enabled in script mode by ║ ║ │ default(LOAD).It can be shifted using NOTE or COME. ║ ║ │ѺGenerally,you only need to list commands in PECMD.INI,put it in a certain place on the disk and ║ ║ │ execute "PECMD.EXE MAIN INI FILE NAME(containing its path,supportive of environment variables)".║ ║ │ѺThe format of script file can be WCE,WCI,WCS,WCX,INI,INF,TXT,LOG and user-defined.To standardize ║ ║ │ INI is applied to LOAD.INI,INF to an install file,WCE,WCI,WCS,WCX to script and WCI,WCX are used║ ║ │ for personal test or adding user-defined note characters before a file name;WCZ,WCM and WZM are ║ ║ │ used for compressed files,and LOG(default)for a log file.The embedded tutorial is encoded with ║ ║ │ TXT-ANSI.The user-defined format of a script should agree with the system-defined standards of ║ ║ │ script and document,or it is likely to go wrong when executed. ║ ║ │▲Attention: ║ ║ │ If a real path is adopted in the command of LOAD and it contains space,""is sure not to be left ║ ║ │ out,for LOAD has its params,eg:LOAD "X:\Program Files\a.ini". If the path is in the form of ║ ║ │ variable referencing and appears literally successive,""can be absent,eg:LOAD %Program%\a.ini. ║ ║ │ // "" is not used. Refer to the remarks of LOAD for more. ║ ║ │▲Please test the script command in PECMDEDIT or in the command line of PECMD rather than that of ║ ║ │ CMD. ║ ║ │▲The main command characters:A-Z,a-z,0-9,_ and Chinese characters."$#@+-|^&"are the symbols for ║ ║ │ the beginning of a suffix,so FIND-JPG and THREAD* FIND-JPG are both invalid in syntax,but a ║ ║ │ complete form like CALL FIND-JPG or THREAD* CALL FIND-JPG stands. ║ ║ │▲EXEC*1 ... NAME=command:a command that immediately stops its execution upon receiving a line of ║ ║ │ message. ║ ║ │▲Use PE variables more than environment variables so as to enable your functions to be used in a ║ ║ │ multi-thread environment. &CurDir ... &ERRORLEVEL user variables ║ ║ │ΔUse internal environment variables with a couple of % like %Desktop% when PECMD commands are ║ ║ │ executed in CMD window or WinGUI applications. ║ ║ │ΔUse internal environment variables with two couples of % like %%Desktop%% when PECMD commands ║ ║ │ are executed in CMD script. ║ ║ │ΔParams containing ">","|","&" or "^" should be bracketed by a pair of double quotes when they ║ ║ │ are used in command line,or attach "^" ahead of these symbols.If not,they will be regarded as ║ ║ │ redirection or pipe operation. PECMD supports interpreting params with quotation mark. ║ ║ │ѺATTENTION:Local variables of lower level can directly reference the value of those of higher ║ ║ │ level,yet it is not recommended for global ones for fear that it will bring about disorder of ║ ║ │ logical structure. ║ ║ │◊You must delete HKLM\SOFTWARE\PELOGON when build PE. ║ ║ │◊Use %% to indicate that it is % rather than a variable. ║ ║ │◊Path variable syntax:Drv:\%Path Var%\%Path Var%,The interpreter,PECMD will not add ":" or "\" ║ ║ │ automatically.Take care! ║ ║ │◊Command syntax1:ABCD [Partition],[Drv letter],[Time to wait] //Comma cannot be ignored despite ║ ║ │ of there being no params! ║ ║ │◊Command syntax2:ABCD [Partition],[Drv letter],[Time to wait] //Comma can be ignored in reverse ║ ║ │ direction when there are no params. ║ ║ │◊Params in⌠⌡are sequence sensitive! ║ ║ │♫Unless in special cases,try not to write a nested command sentence in a single line but in a ║ ║ │ standard way of newline to make it easy to read and understand. ║ ║ │▲Exit code of PECMD.exe is the last error code of a command.0 means no error.A minus (or > ║ ║ │ 0x7FFFFFFF) results in 1. ║ ║ │▲Commands to sort drive letters should be placed at the very head of PECMD.INI. ║ ║ │▲Some ^ before the command means pre-interpreting it several times. ║ ║ │◊-[ ]LOGS debugging information //This line is only displayed in a log file. ║ ╚════╧══════════════════════════════════════════════════════════════════════════════════════════════════╝ ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ WinCMD - Command interpreter,capable of creating windows and following controls ║ ╠══════════════════════════╤════════════════════════╤══════════════════════════╤════════════════════════╣ ║ComboBox │Button │Picture-IMAG │CheckBox ║ ║Edit │HotKey │Popup-Menu TrayIconMenu│Radio ║ ║ProgressBar-PBAR │Group GroupPanel│Static-LABE TXT Label │Timer ║ ║Tabl │List │MEMO TXT Edit │BROW Browse║ ╠══════════════════════════╧════════════════════════╧══════════════════════════╧════════════════════════╣ ║ WinCMD - Windows Commander,embedded with following environment variables ║ ╠══════════════════════════════════╤══════════════════════════════════╤═════════════════════════════════╣ ║CurDir &CurDir ConfigFile Dir│CurFile &CurFile ConfigFile Name│CurDrv &CurDrv ConfigFile Drv║ ║Favorites Full Path of Favarites│IECache IE Temp Dir│MyName &MyName NameOfFileItself ║ ║Personal MyDocument Dir│Programs Programs Dir│SendTo Dir Send To║ ║StartMenu StartMenu Dir│Startup StartMenu Dir│QuickLaunch ║ ║Desktop Desktop Dir│&&__MAIN__ 1 in Main Script│&__OldDir DirBeforeLoad_OnStart║ ║&&ERROR ERROR Command ErrorCode│&WM_PE_BASE PE Message Base│&PE_IDBASE PE Control ID Base║ ║&PeExe 1=Norm 0=EmbScrpit -1=Init│&SYSCODEPAGE │&WM_TaskbarRestart DsktpRestMess║ ║&__PID &__PPID &__TID &__LastPID &__LastTID &__HINST PID ParentPID ThreadID LastCreatePID/TID ProcHandl║ ║&&ERRORLEVEL EXEC ERRLVL Wait Mode│&bX64 3=PECMD64 1=WIN64 0=WIN32│&PECMDVER &PECMDBUILD Version║ ║RANDOM RanNumVar(Non_Minus INT64)│_CD &_CD RltmCurDir│&__WinID &__LastWinID CurWinID LastCreateWinID║ ║&__NMHDR.idFrom &__NMHDR.code │&__NMHDR.hwndFrom WM_NOTIFY Param│&__LOGS Current LOGS File║ ║&__wParam.wID &__wParam.wNotifyCode WM_COMMAND Control ID Message ID│&PE_MENU_IDBASE Menu Base ID║ ║&__THIS unique COOKIE of PE_STACK &&__RET Contracted functions return variables %PeVar?type:[~]off% ║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝ ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ PECMD - WinPE Commander explanations,examlples and remarks on commands ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'_END' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│_END ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To finish the subprocess and continue the command following CALL that calls this subprocess. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■NO ║ ║_END├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│_END ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼_SUB and _END,which define a subprocess,should be in a separate line,ie,in FIND,IFEX and ║ ║ │ │ TEAM subprocess cannot be defined. ║ ║ │ │☼Commands between _Sub and _End(subprocess) can only be excuted by the corresponding ║ ║ │ │ command of CALL.The main process will skip them. ║ ║ │ │☼_END should always be paired with _SUB and subprocess cannot be defined in a subprocess. ║ ║ │ │☼It is recommended to place the subprocess at the beginning of the config file though it ║ ║ │ │ can be called anywhere by the command of CALL in the same config file. ║ ║ │ │☼This command can only be used in a config file instead of a command line. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'_ENDFILE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║_ F│FORM│_ENDFILE[-IMPORT] ║ ║E I├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║N L│FUNC│End of a script ║ ║D E├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Something else of code-level can be put behind it yet will not be executed. ║ ║ │ │☼_ENDFILE-IMPORT is only effective to files IMPORTed,[FIND $1 = %&&__MAIN__%,]also has such ║ ║ │ │ function with the code behind abandoned. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'_SUB' 'CLASS' 'WINDOW' 'FUNCTION' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│_SUB [*] //* indicates the function is of THIS type,so is its being called. ║ ║ │ │_SUB ,,[WinTitle],[[=]Event],[WinIcon],[WinType],[Mask] [,-ntab -nfocus ║ ║ │ │ -top-forcenomin -disminb -maxb -discloseb -nosysmenu -nocap -[dis]altmv -size -trap ║ ║ │ │ -na -scale[f|:DPI]] ║ ║ │ │_SUB SubprocName,*,,destructing commands //a function with destructing commands(comma can be ║ ║ │ │ contained)(automatically executed before return). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To define a class,subfunction(process)or window,supporting nested definition of a subclass. ║ ║CLS ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■SubprocName:string.Being followed by ",*" indicates there being lasting stacks,and ",#" ║ ║ │ │ indicates a hidden window. ║ ║ │ │■WinName:string,should be unique,not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║WIN │ │■WinTitle:characters. ║ ║ │ │■WinShape:position and size of a window.The format is ,L,T,W ║ ║ │ │ and H are respectively followed by corresponding numbers.Center-aligned if L and T absent. ║ ║ │ │■Event:the command (by WinCMD) to execute upon the closing of a window.=:not close ║ ║FUNC│ │■WinIcon:the icon for the titlebar in a window and displayed on the taskbar.The format is ║ ║ │ │ . ║ ║ │ │■WinType:[-][#][[$]Num][:[TranspColor]],"-":no titlebar,"#":no frame.1-99:transparency. ║ ║ │ │ $ before Num indicates values 0-255;100(255) indicates a hidden window.TranspColor refers ║ ║ │ │ to the color to be transparent,background color by default. ║ ║ │ │■Mask:[%FFFFFF%][*][<[W:H]>]bmpname indicates special-shaped window mask,generally black or ║ ║ │ │ white BMP(RLE compressed format permitted),GIF,JPG.[%FFFFFF%] indicates transparency,0 ║ ║ │ │ (Black)by default.*[*] indicates setting as background [only]. ~:scale,#ID indicates ║ ║ │ │ internal BMP, ID refers to resource ID,like #100.When using transparent color, the font ║ ║ │ │ Quality is set to 3. ║ ║ │ │■Status:-top:top -forcenomin:not to be minimized. -disminb:to disable minimize button. -maxb:║ ║ │ │ to enable maximize button. -discloseb:to disable close button; -nosysmenu:no system menu ║ ║ │ │ -nocap:no titlebar.-nfocus:no focus. -disaltmv:to disable pressing ALT to move it with ║ ║ │ │ mouse. -size:size ajustable. -trap:to close the button without exit. -ntab:no keyboard ║ ║ │ │ focus. -csize:custom size -na:not active -scale:scale for win8 -scalef: surpport NT5 ║ ║ │ │ -scale:DPI scale by user DPI -nxp:NoXPStyle ║ ║_SUB├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│_SUB DoLoop or _SUB Windows1,W360H440,WinCMD Function Demo,EXEC $USAGE.TXT,%IconFile%#19,20 ║ ║ │ │_SUB F1,*,,IFEX #[ %&h%<>0xFFFFFFFF && %&h%>0 ],CALL $Kernel32.dll,CloseHandle,#%&h% ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The name of a subfunction or window cannot begin with "$",and there should be a space ║ ║ │ │ between the command keyword _SUB and the name of the subprocess or window. ║ ║ │ │☼A name beginning with & indicates a local one.This helps to avoid conflicts in a thread, ║ ║ │ │ which can also be achieved by entering the local mode of the thread. ║ ║ │ │☼If many _SUBs exist,names defined by them cannot be the same,approximated or set as ║ ║ │ │ environment variables. ║ ║ │ │☼This command should be paired with _END,neither of them can be used in command line. ║ ║ │ │ Refer to END,CALL for more ║ ║ │ │☼To set the title of a window,use "ENVI @WinName=WinTitle". Refer to ENVI ║ ║ │ │☼After transparency(not 0) is set in "WinType",the control IMAG cannot display GIF. ║ ║ │ │☼The subprocess has LAMBDA itself,so it is able to access PE variables of its caller. ║ ║ │ │☼The subfunction names of different classes or subclasses can be the same.Member functions ║ ║ │ │ of a parent class are accessible to its successor.At least one space should be indented in ║ ║ │ │ nested definition. ║ ║ │ │☼Connect the name of another class with the class field mark :: to access a subfunction of ║ ║ │ │ it.Beginning with :: means starting from the class of top level,multi-level is permitted. ║ ║ │ │☼With its own stacks,the command automatically destruct PE variables,lock,controls and HKEY ║ ║ │ │ when it exits. ║ ║ │ │☼" ." is appointed as the mark of data memembers of a class,like ENVI aa.bb.cc.d=1. ║ ║ │ │☼_SUB becomes a shortcut to add user-defined commands after it is extended.It can be used ║ ║ │ │ as an internal command (CALL is not needed). ║ ║ │ │☼A common function can also be called by the command of CALL as a window object,generating ║ ║ │ │ many objects(fibre). ║ ║ │ │☼Use "ENVI @WinName or CtrlName.Enable=[#]Value" to set its serviceability,0:disabled, ║ ║ │ │ 1:enabled(not to respond).#:used in subthread. ║ ║ │ │☼Use "ENVI @WinName or CtrlName.Visible=[*]Value" to set its visibility,0:invisible, ║ ║ │ │ 1:visible,* indicates the second plan.>=1,successively as follows: ║ ║ │ │ SW_SHOW,SW_SHOWNORMAL,SW_MAXIMIZE,SW_MINIMIZE,SW_RESTORE,SW_SHOWDEFAULT,SW_SHOWMAXIMIZED, ║ ║ │ │ SW_SHOWMINIMIZED,SW_SHOWMINNOACTIVE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_FORCEMINIMIZE. ║ ║ │ │ (Refer to supplements.doc) ║ ║ │ │☼A window without titlebar can be dragged by press ALT and the left button of the mouse. ║ ║ │ │☼"ENVI @Win.Paint=FuncName":to set canvas callback function with params HDC Width Height. ║ ║ │ │☼"ENVI @WinOrCtrlName.InvalidateRect=|#WID|@SubName[~ExtVal]:[EraseBkground]"refresh║ ║ │ │☼"ENVI @WinOrCtrlName.Cursor=CursorID[,][DLL File]". //to set cursor in a window.If the ║ ║ │ │ comma is absent,it refers to the system cursor. ║ ║ │ │☼"ENVI @WinOrCtrlName.Font=[FontSize][:[FontName][FontAdorn]]". //to set font,refer to EDIT ║ ║ │ │☼"ENVI @WinOrCtrlName.bkcolor=[BackColorVal]". //to set backcolor and to clear if null. ║ ║ │ │☼"ENVI @WinOrCtrlName.trans=0/1". //0x1:to set the transparency mode of background, ║ ║ │ │ 0x2:totally transparent. ║ ║ │ │☼"ENVI @WinOrCtrlName.style=[@*]CancelStyle[:AddStyle]".ENVI @@style=%WID%:[@*]v1:v2 ║ ║ │ │ //@:direct,*:extended ║ ║ │ │☼"ENVI @Win.HitTest=Height[:Width:x:y]". //to set the sensitive range of a movable window. ║ ║ │ │ If height<=0,cancelled. ║ ║ │ │☼"ENVI @WinOrCtrlName.cmd[?]=Name|CMD" //to set/query the response command dynamically. ║ ║ │ │ query need "ENVI^ QueryCmd=1" ║ ║ │ │☼"ENVI @WinOrCtrlName.nxp=" //disable XPStyle ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │◙Class and instance:One class can generate many instances simutaneously,each of which has ║ ║ │ │ its own name.In a window instance,THIS refers to the current real window instance. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼ ENVI @@Enable=WinID:[#]Num",0:disabled(not to respond); 1:enabled. #:used in subprocess. ║ ║ │ │☼ ENVI @@Visible=WinID:[*]Num":to set its visibility,0:invisible,1:visible.*:the second ║ ║ │ │ plan,the same as above. ║ ║ │ │☼ ENVI @@Enable=?WinID:VarName":to return the status of serviceability. ║ ║ │ │☼ ENVI @@Visible=?WinID:VarName":to return the status of visibility. ║ ║ │ │☼ ENVI @WinCtrlName.Enable=?VarName":to return the status of serviceability. ║ ║ │ │☼ ENVI @WinCtrlName.Visible=?VarName":to return the status of visibility. ║ ║ │ │☼ ENVI @@IsWindow=?WinID:VarName":to return whether it is WinID or not. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'POS' 'POSITION' 'SIZE' 'LEVEL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║POS │PARA│ENVI @WinAndCtrlName.POS=L:T:[@]W:H:Level:Transp:Front:Actv:PareWinID::CustW:CustH //@RealWH ║ ║SIZE│ │ENVI @WinAndCtrlName.POS=?[@]L_VarName:T_VarName:[@]W_VarName:H_VarName:X0_VarName: ║ ║ │ │ Y0_VarName:Actv_VarName:PareWinID_VarName:CustW_VarName:CustH_VarName //to query ║ ║LEVL│ │ENVI @@POS=WinID:L:T:[@]W:H:Level:[$]Transp:Front:Actv:PareWinID::CustW:CustH ║ ║ │ │ENVI @@POS=?WinID:[@]L_VarName:T_VarName:W_VarName:H_VarName:X0_VarName:Y0_VarName: ║ ║ │ │Actv_VarName:PareWinID_VarName:CustW_VarName:CustH_VarName //to query ║ ║ │ │Format1:to set,Level1:BLevel,2:CancTLevel,3:TLevel,4:FixedOnTLevel,Null or *:unchanged, ║ ║ │ │Frnt1:at the front,Actv1:activated,$ before transparency refers to the format of 0-255, ║ ║ │ │Format2:to query,(X0,Y0):the customer base relative coordinates,null is permitted, ║ ║ │ │@L indicates returning screen absolute coordinates,@W returning the real width and height. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│ ENVI @WIN1.POS=%X1%:300:300:180:4 //to move,change its size and fix it on the top level. ║ ║ │ │ ENVI @B1.POS=?X2:Y2:W2:H2 //to query its size. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MESSAGE MAPPING' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■ENVI @WinAndCtrlName.MSG=[_$*+]MsgID:[:[wPrm ParamName],[lPrm ParamName],] command to ║ ║ │ │ execute //to define the capture of message mapping. ║ ║ │ │ front command by default; _ refers to rear command; $ alternative command,ignoring system ║ ║ │ │ response and meanwhile return outcome code; * used in the command of TRAP B. +:super mode ║ ║ │ │ "Command to execute" beginning with - indicates executing from the window where it lies ║ ║ │ │ (execution stacks). <:DisLogsCmd ║ ║ │ │■ENVI @WinAndCtrlName.POSTMSG=[:VarName;]MsgID[;Param wPrm[;Param lPrm]] //Send msg asynch ║ ║ │ │■ENVI @WinAndCtrlName.SENDMSG=[:VarName;]MsgID[;Param wPrm[;Param lPrm]] //Send msg synch ║ ║ │ │■ENVI @@POSTMSG=[:VarName;]WinID;MsgID[;Param wPrm[;Param lPrm]] //Send msg asynch ║ ║ │ │■ENVI @@SENDMSG=[:VarName;]WinID;MsgID[;Param wPrm[;Param lPrm]] //Send msg synch ║ ║ │ │ The two WinIDs above can be *[?Timeout[?Interval]][*WinClassName*][Title] ║ ║ │ │■Applicable to _SUB window and control.For MsgID,see:WM_MSG.WCS,IMPORT is applicable. ║ ║ │ │ The VarName returns the outcome(Its meaning depends on the message). ║ ║ │ │■MsgID beginning with # indicates PECMD will apply user-defined message 1-N. wPrm,lPrm are ║ ║ │ │ param names,which can be referenced._ after = indicates entering next-half-response mode, ║ ║ │ │ ie,to respond after the system response(to respond to derived messages in reverse order). ║ ║ │ │ ";" above can be replaced with ",".Params for message can be numbers,@PEVarName(ENVI$# to ║ ║ │ │ fill non-string objects),$String(only applicable to SENDMSG). ║ ║ │ │ .MSG=MsgID can be:#[CtrlID][# minor MsgID] ║ ║MSG ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║MAP │EXMP│ ENVI @Win1.MSG=#1::wp,lp,MESS- HELLO wp=[%wp%],lp=[%lp%]@#OK ║ ║ │ │ ENVI @Win1.POSTMSG=#1,1,2 //to trigger message #1. ║ ║ │ │ ENVI @Win1.MSG=%&WM_LBUTTONUP%:MESS You have clicked. ║ ║ │ │ ENVI @Edit1.MSG=%&WM_MOUSEENTER%:ENVI @Edit1=The mouse has entered. ║ ║ │ │ ENVI @@SENDMSG=%__WinID%:#2;@str1;@str2 or ENVI @@SENDMSG=%__WinID%:#2;$Line11;$abc11 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │MODL│How PECMD captures the echo of CMD command line(not via temporary file)? Eg:how to capture ║ ║ │ │the echo of CMD command "dir d: /d"? ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ EXEC* &V=!cmd.exe /c dir d: /d ║ ║ │ │ MESS. [%&V%]@DEBUG#OK ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │ ☼EXEC* @CtrlName=CMD:The outcome of the "CMD" can be displayed synchronously on controls ║ ║ │ │ like EDIT/MEMO/LABE. Refer to EXEC. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'BLOCK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│ A segment of code surrounded by{} ║ ║ │ │ TEAM SET &cmd={CMD1 %NL% CMD2 %NL%...}|%&cmd% //Multiline with variable embedded,separated ║ ║ │ │ by line breaks. ║ ║ │ │ (CMD1 %NL% CMD2 %NL%...) //Multiline with plain codes embedded,separated by line breaks. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To define a segment of code.With its own stacks,it automatically destructs PE variables, ║ ║ │ │locks,controls and HKEY when it exits.It can be used as an internal function. ║ ║ │ │{ being followed by * indicates a code segment of THIS type without stacks of its own or the ║ ║ B │ │ability of self-dustruction,merely indicative of range. ║ ║ L ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ O │EXMP│TEAM { wait 10 | LOCK train tickets | handle train tickets 123 | handle train tickets 2 } ║ ║ C ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ K │REM │☼It can be used at file level or in a function and a command group.Nesting is permitted. ║ ║ │ │☼At file level or function level,{} should be the first non null character in the first ║ ║ │ │ line.At command group level,unrestricted,yet{} should be at the head of the command group. ║ ║ │ │☼Condition Block ║ ║ │ │ IFEX/FIND COND,[!] //With ! refers to ELSE part,without ! or !! refers to IF part, ║ ║ │ │ only one of them is adopted. ║ ║ │ │ { ....code lines ║ ║ │ │ } ║ ║ │ │ IFEX/FIND COND,[!] { CMD1 // "{" is not at TOL.Be cautious to use.It cannot be nested. ║ ║ │ │ ....CMD2... code lines //True[False]Condition ║ ║ │ │ } ║ ║ │ │ IFEX/FIND COND, //without ! ║ ║ │ │ { ....code lines //True condition ║ ║ │ │ }! ║ ║ │ │ { ....code lines //False condition,"}" is closely followed by !,! can be followed by ║ ║ │ │ several null characters,and then by "{". ║ ║ │ │ } ║ ║ │ │ IFEX/FIND COND, { CMD1 //without !,"{" is not at TOL.Be cautious.It cannot be nested. ║ ║ │ │ ....CMD2... code lines //True condition ║ ║ │ │ }! ║ ║ │ │ { ....code lines //False condition,"}" is closely followed by !,! can be followed by ║ ║ │ │ several null characters,and then by "{". ║ ║ │ │ } ║ ║ │ │ IFEX/FIND COND, CMD! //True condition,! is followed by blank. ║ ║ │ │ { ....code lines //False condition. ║ ║ │ │ } ║ ║ │ │ LOOP/FORX COND,[!] [FORX Var,] ║ ║ │ │ { ....code lines ║ ║ │ │ } ║ ║ │ │Notice:Nesting is permitted within a block.{}should be at TOL,where multiple {} can be mixed ║ ║ │ │ {...} can be embedded into a line as a whole.IFEX/FIND/LOOP/FORX COND,[!!] ...{...}... ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LAMBDA' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│[]param list separated by space{LAMBDA function body} ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ L │FUNC│To define a segment of code with stacks and param list of its own.It can be used as an ║ ║ A │ │internal function.It automatically destructs PE variables and locks when exits. ║ ║ M ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ B │EXMP│[]P1 P2 P3 "345 667"{ MESS [LAMBDADEMO] %* @DEBUG #OK } ║ ║ D ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ A │REM │☼It can be used at file level,in a function or a command group.Nesting is permitted. ║ ║ │ │☼At file level or function level,{} should be the first non null character in the first ║ ║ │ │ line.At command group level,before | or at EOL,yet{} should be at the head of the command ║ ║ │ │ group. ║ ║ │ │☼LAMBDA function body of command group level will be interpreted as a variable string,so it ║ ║ │ │ is dynamic,and meanwhile "%" should be replaced with "%%". ║ ║ │ │☼With stacks of its own,it automatically destruct PE variables,locks,ctrls and HKEY on exit ║ ║ │ │☼_SUB is actually LAMBDA and LAMBDA is featured to be able to use the stacks of its caller. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'ADSL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│ADSL [ADSLAccount],[ADSLPassword],[DialRetryTimes|stop|list[on]],[ConnectName|*|RetName] ║ ║ │ │ADSL-wlan SSID|&ProfileVar,PassWD,authentication[,Idx] //default auth:WPA2PSK AES (1 space!) ║ ║ │ │ADSL-wlan Index,,[?][^|*|-]list|query[all]|scan,RetName //query:Index guiid State Desc ║ ║ │ │ list:SSID SignalQuality Flags BssType NumBssid bConnectabl NotConnecReason bSecurityEned ║ ║ │ │ DefaultAuthAlgorithm DefaultCipherAlgorithm bMorePhyType NumberOfPhyType PhyTypes[] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To establish an ADSL connection according to the specified account and password. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■ADSLAccount:string,BASE64 variation code calculated by BASE from "ADSLAccount". ║ ║ │ │■ADSLPassword:string,BASE64 variation code calculated by BASE from "ADSLPassword". ║ ║ │ │■DialRetryTimes:number,supportive of values of Hex,1 by default if absent. ║ ║ │ │■ADSLConnectionName:string,in"Network Neighbourhood" ==> "Property" ADSLConnectionName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ADSL│EXMP│ADSL MhFTxYzM4AUbtR2cuM2btB==,XlmbUV2c0B==,,ADSL Connection or ADSL ,,,My Connection ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼"ADSLAccount" and "ADSLPassword" should be generated by BASE to ensure the safety of ║ ║ │ │ user's ADSL information. ║ ║ │ │☼"DialRetryTimes" indicates the times of retrying when dialing fails.0 or smaller than 0 ║ ║ │ │ indicates dialing up repeatedly until it succeeds. ║ ║ │ │☼"ADSLConnectionName" can be absent.The command of ADSL will dial up the connection in the ║ ║ │ │ system if it exists; If a valid connection does not exist,ADSL will establish an specified ║ ║ │ │ one and dial it up according to its params; If a valid connection does not exist and ADSL ║ ║ │ │ does not specify a connection name,WinCMD will establish a default one and dial it up ║ ║ │ │ according to its params; If ADSLAccount or ADSLPassword is absent,ADSL will only establish ║ ║ │ │ a connection but not dial it up. ║ ║ │ │☼This command demands PPPOE components in the system and is applicalbe to both a config ║ ║ │ │ file and command line. ║ ║ │ │☼Example 1 will dial up once according to the specified params using "ADSLConnection"; ║ ║ │ │ Example 2 will only establish a PPPOE dial-up connection named "My Connection". ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'BASE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│BASE [,VarName] ║ ║ │ │BASE* [-u] [,VarName] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│Auxiliary command of ADSL to calculate the BASE64 variation code of a string,which is used ║ ║ │ │for such data as the encrypted user's password of ADSL. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■Str:The string used for calculating the BASE64 variation code,supportive of a mixed string ║ ║ │ │ of Chinese and English,case sensitive. ║ ║ │ │■VarName:to store the outcome of calculation. ║ ║BASE├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│BASE mdyblog@163.com,AdslUserName or BASE PassWord,AdslPassWord ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼When the BASE64 variation code is calculated by BASE,the number of the characters in the ║ ║ │ │ string should be limited within 256(containing no ","). ║ ║ │ │☼VarName given,BASE will store the outcome of calculation in the specified variable. ║ ║ │ │ Example 2 can be referenced via the environment variable %AdslPassWord%. ║ ║ │ │☼If VarName is absent,BASE will display the outcome of calculation in the form of a message ║ ║ │ │ window and meanwhile store them in the clipboard. ║ ║ │ │☼BASE adopts BASE64 variation algorithm,the outcome of which differs from that of a common ║ ║ │ │ algorithm to ensure the safety of user's data,thus it offers no decoding command as well. ║ ║ │ │☼BASE* refers to a common algorithm,offering decoding command. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'BROW' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│BROW [-fix] ,[[*|&]InitPath],[Tips],[ExtName],[AddMark] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To browse file or directory on the disk.-fix:to crack down the shield of system directory ║ ║ │ │(not sure to succeed). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the result of browsing. ║ ║ │ │■InitPath:the file or directory selected by default in the browsing window.If absent,the ║ ║ │ │ system default path will be positioned; "*" indicates a dialogbox for directory browsing. ║ ║ │ │ "&" a dialogbox for file saving; If the leading character is absent,the default is a ║ ║ │ │ dialogbox for file opening. ║ ║ │ │■Tips:can be absent.If so,tips will be the system default ones. ║ ║ │ │■ExtName:to browse the file with the specified extended name.Being absent indicates all. ║ ║ │ │ It can also be a string of many options:[TIPS1|*.EXT1|TIPS2|*.EXT2|],like: ║ ║ │ │ INI FILE|*.INI|All|*.*| ║ ║BROW│ │■AddMark:style of the dilogbox for directory browsing:"no [Editbox],with [NewDir]button, ║ ║ │ │ no FileDisplay" by default. ║ ║ │ │ 0x10:with Editbox; 0x200:no NewDir Button; 0x4000:FileDirCompoundSelect ║ ║ │ │■SelFile: ║ ║ │ │ 0x200:multiselect; 0x80000:browser style; 0x2000:warning of NEW; 0x02000000: ║ ║ │ │ to exclude shortcuts of recent visit; 0x800000:size changeable; 0x1000:file must be in ║ ║ │ │ existence; 0x40000:short file name; 0x2:warning of overwriting; 0x1:read-only if checked; ║ ║ │ │ 0x800: warning of invalid path; 0x8000:to exlude read-only files; 0x4:to remove checkbox ║ ║ │ │ for read-only; 0x10000000:to select read-only or hidden files ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│BROW Boot_Ini,C:\BOOT.INI,Please select a file,INI or BROW Tag,*C:\Windows,Please select a ║ ║ │ │directory ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The hex sum of the three marks "with Editbox,no NewDir Button,FileDisplay" in the ║ ║ │ │ dialogbox for directory browsing is 0x4210. ║ ║ │ │☼This command will open a dialogbox for users to browse files or directories and select one ║ ║ │ │ in it. ║ ║ │ │☼The selection can be stored in an environment variable of a process.Example 2 can be ║ ║ │ │ referenced via the environment variable %Tag%. ║ ║ │ │☼BROW is often executed after the command of INIT or on the desktop. ║ ║ │ │☼This version of PECMD differs from those of old version,BROW no longer affects current ║ ║ │ │ working directory and thus it will not hang on in the target directory any more. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'CALC' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│CALC[-txt-cb-[Lfr:Lto[:Rfr:step]]] [-gui -base=2|8|10|16|N] [-err=ErrVal] ║ ║ │ │ [[[#]Var]=]Expr1[#[#][DeciDigits][E|F|G]] ║ ║ │ │CALC Format[[[#]Var]=][[#|$]SubVarName1=]Expr1 and suffix;or newline[[#|$]SubVarName2=]Expr2 ║ ║ │ │ and suffix; ... ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To store the outcome of the expression calculation in a "Var".E:scientific notation; ║ ║ │ │F:decimal; G:to adopt a brief way automatically. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■-base= indicates the base of the output.Outcome:binary is indicated as 0bNNNN; octonary as ║ ║ │ │ 0oNNNN; hex as 0xNNNN; These datas can be directly operated by CALC.N,as other nonstandard ║ ║ │ │ number system,carries no prefix and cannot be operated.The number system is also ║ ║ │ │ applicable to floating number(rounding). -gui:graphic users interface ║ ║ │ │■The leading charater "#" indicates all variables will be treated as the type of int64; If ║ ║ │ │ the leading character is absent or $ is present,all variables will be treated as type of ║ ║ │ │ double. ║ ║ │ │■Specific numbers or existing variables can be in the expression,supportive of the input in ║ ║ │ │ scientific notation. ║ ║CALC│ │■Operator supported: or"||"; and"&&"; xor"@@"; bit or"|"; bit and"&"; bit xor"@"; =,<>; >, ║ ║ │ │ >=,<,<=; "+","-"; mul"*",div"/",com"%"; pow"^" and ()[]{},arranged in successive priority. ║ ║ │ │ The number of items is unlimited and the data includes floating number; ║ ║ │ │ The suffix TGMKS is supported(K=1024 S=512),so is the mathematical constant: ║ ║ │ │ e(natural constant),pi(circum ratioπ),2 constants in all. A space follows opertor -. ║ ║ │ │■Suffix "#":When the outcome of calculation is treated as type of double,as many decimal ║ ║ │ │ digits as possible are kept by default,16 digits at most;(round up or down) ║ ║ │ │ The meaningless 0 behind will be all eliminated by default; ## indicates retaining them. ║ ║ │ │ Mathematical functions supported: ║ ║ │ │ abs(a) absolute arccos(a) arcctg(a) ║ ║ │ │ arcsin(a) arctan(a) ceil(a) ceiling ║ ║ │ │ cos(a) ctg(a) deg(a) ║ ║ │ │ div(a,b) division exp(a) frac(a) fraction ║ ║ │ │ floor(a) hypot(a,b) int(a) integer ║ ║ │ │ lg(a) ln(a) log(a,b) ║ ║ │ │ max(a,b) min(a,b) mod(a,b) modulo ║ ║ │ │ pow(a,b) power pow10(a) 10 power rad(a) ║ ║ │ │ rand(a) random round(a) shl(a,b) shift left ║ ║ │ │ shr(a,b) shift right sin(a) sqrt(a) square root ║ ║ │ │ tan(a) xor(a,b) not(a)[or ~a] ║ ║ │ │ lnot(a) [or !a] logical not ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│♦ CALC #Sum = 128 + 32*22 or CALC Sum = %Datum1% + %Datum2% * 32 ║ ║ │ │♦ CALC #Result = 128 * ( 64 +66 ) or CALC Result = %Datum1% * ( %Datum2% + 12 ) ║ ║ │ │♦ CALC 1+3 or CALC V= &v1=1+3;%&v1%*100 or CALC = &v1=1+3;%&v1%*100 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼"Var"can be directly set by ENVI(assigned)or the assigned outcome of CALC calculation. ║ ║ │ │☼IFEX can also be employed to judge and compare numerical values. ║ ║ │ │☼No difference in handling float and integer numbers below 16-digit decimal. ║ ║ │ │ ±9007199254740991 ║ ║ │ │☼To use % conveniently,%n%* are forbidden.If they are needed,convert them into variable ║ ║ │ │ referencing with ENVI, or add ^before cmd.If CALC | is used in TEAM,More "|" should be ║ ║ │ │ added to according to the number of nesting for "|". ║ ║ │ │☼To obtain a random number:directly reference %RANDOM%,the outcome of which is 63-digit ║ ║ │ │ positive integer different each time.RAND VarName or ROUND() is also practicable. ║ ║ │ │ 0----9:CALC #R0_9=%RANDOM% % 10 or RSTR R0_9=1,%RANDOM% or ROUND(10) ║ ║ │ │☼If VarName is absent,the outcome will be displayed.Expressions are separated by ";" or ║ ║ │ │ line breaks. ║ ║ │ │☼The limit of integer in CALC and PECMD ranges from -0x8000000000000000~0x7FFFFFFFFFFFFFFF ║ ║ │ │ No such limit for a float. ║ ║ │ │☼-[f1:t1[:f2]] operation for vector. %%d is cursor.The parameters are left start_end and ║ ║ │ │ right start ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'CALL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│CALL $[? ][--cd ][--nrcd ][--c ][--ret:RetVarName ]DLLPath|*DllHandle[,FuncName][,[#]Param1] ║ ║ │ │ [,...[,[#]Param20 ║ ║ │ │CALL $[? ][--cd ][--nrcd ][--c ]--ret:* DLLPath,FuncName,[RetVarName][,[#]Param1] ║ ║ │ │ [,...[,[#]Param20 ║ ║ │ │CALL $--ret:RetName [--cd --nrcd ] ,-LoadLibrary,[^]DLLPath //Load Dll ^:AutoFree ║ ║ │ │CALL $--ret:RetName [&DllMemVar],-LoadLibrary,*[FileName]#SrcID[|Cat]//Load MEM Dll AutoFree ║ ║ │ │CALL $--ret:RetName ,-GetProcAddress,*DllHandle,FuncName //Get Address of fun ║ ║ │ │CALL $[--ret:RetName] ,-FreeLibrary,*DllHandle //Release DllHandle ║ ║ │ │CALL $--win [--qd@] [--cd ][--nrcd ] [--ret:RetVarName ]DLLPath,FuncName,CMDLineParam ║ ║ │ │ //to run dll32. ║ ║ │ │CALL $--cpl CPLPath, //control panel file ║ ║ │ │CALL [LeadChar] [CMDLineParam] ║ ║ │ │CALL * [CMDLineParam] //call of THIS type ║ ║ │ │CALL [CMDLineParam] //to generate an instance of a class. ║ ║ │ │CALL @-sub[:@-#LxTyWwHh]] [LeadChar] [CMDLineParam] //external subwindow ║ ║ │ │ @:to keep the relationship of parent and child; -#:frame with title ║ ║ │ │CALL @--popmenu[:x.y[:align]]] [ParamList] //popup menu ║ ║ │ │CALL --mem VarName [*] [CMDLineParam] //to run the dynamic memory function code. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To call DLL function or subprocess. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│☼The leading Character "$" indicates calling DLL function,--c:C call regulations.If the ║ ║ │ │ function name is *,the call is only DLL preloading(Later calls will be faster),and it is ║ ║ │ │ safe to call many times.DLLPath,FuncName and params can be specified.If FuncName is absent ║ ║ │ │ ,it will call "DllRegisterServer".Params are UNICODE string by default."@" refers to ║ ║ │ │ narrow string and "#" refers to integer; 20 function params(100 for C call)at most. ║ ║ │ │ --cd:to shift to the target directory before execution; --nrcd/--rcd:(not)to restore ║ ║ │ │ directory after execution.Unkown DLL is executed in another PECMD thread. ║ ║ │ │ --qd:all led by leading characters,#integer,*PE_VarName,$string,=primitive string. ║ ║ │ │ --qd#/--qd*/--qd$/--qd@/--qd=/--qd~ :All params are integer/PE_VarNm/str/NarrowStr/UTF8Str ║ ║ │ │ primitive string; --m:to run DLL(CMPS permitted)in the memory. ║ ║ │ │ DLLPath can be *[FileName]#SrcID(CMPS permitted;handle as *num ║ ║CALL│ │ --co/--nco:to initialize DLL(default) when it is registered/or not. ║ ║ │ │ --1:the whole part behind as one param. --16:return Hex. ║ ║ │ │ --bool: API return BOOL on succ --sret return signed int ║ ║ │ │To call the address:If DLLPath is the character #,FuncName is directly the function address. ║ ║ │ │To query the address:? indicates querying the address,the outcome stored in RetVarName. ║ ║ │ │■"@" indicates calling a window defined by _SUB.In a window defined by _SUB,execute CALL @ ║ ║ │ │ to call another. ║ ║ │ │■"@*" indicates calling a window defined by _SUB concurrently,enabling it to be ║ ║ │ │ simutaneously operated together with its parent window.The next command cannot be ║ ║ │ │ executed before it is closed. ║ ║ │ │■"@-" indicates calling a window defined by _SUB in the background and continue with the ║ ║ │ │ next command,but some time-consuming operations will still be blocked. ║ ║ │ │■"@~" indicates calling a window defined by _SUB backstage and some time-consuming ║ ║ │ │ operations will not be blocked. ║ ║ │ │■"@+" indicates calling a window defined by _SUB backstage and some time-consuming ║ ║ │ │ operations will not be blocked.The window becomes abandoned.The program does not wait ║ ║ │ │ for its being closed to exit. ║ ║ │ │■"@^" resembles @*,yet the parent window will not shield the child,applicable to a purely ║ ║ │ │ event-driven parent window. ║ ║ │ │☼"$" Being absent indicates calling subprocess,whose name is the param. ║ ║ │ │■The format of the function params:In a subprocess and window,%0,%1,%2,...%n respectively ║ ║ │ │ refers to SubProcName/WinName,and the param No.1,No.2,...No.n. ║ ║ │ │ %# indicates the number of params.%* indicates all params starting from %1. ║ ║ │ │ %~0,%~1,%~2,...%~n indicates elimenating the outermost double quotes. ║ ║ │ │ %@ indicates all params starting from %0. ║ ║ │ │☼CALL can absent,together with @,eg:CALL @WIN1 a b c or WIN1 a b c ║ ║ │ │☼Popup menu:x.y are the menu coordinate.If absent,they are the position of current mouse. ║ ║ │ │ WM_MENUSELECT is hovering message for menu,with index:(%wParam%&0xFFFF)-%PE_MENU_IDBASE% ║ ║ │ │ Select:%&__MenuId% %&__MenuInx% ║ ║ │ │☼"CALL @--":to unload the windows environment."CALL @":to initialize the windows ║ ║ │ │ environment so that soem related windows commands can be executed in any place. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│☼To call DLL function: CALL $SHELL32.DLL,DllInstall,#1,U ║ ║ │ │☼To call subprocess: FIND MEM>127,CALL EXPLORER_SHELL!CALL CMD_SHELL ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼DLLPath: maybe *DllHandle or **MemDllHandle ║ ║ │ │☼To call DLL function:Functions in DLL are in accordance with PASCAL call regulations, ║ ║ │ │ unless with --c(just ignore it if you do not understand). ║ ║ │ │ -DllRegisterServer: RegisterDLL -DllUnregisterServer: UnregisterDLL ║ ║ │ │☼To call subprocess:The command of CALL can only call the subprocess in the same config ║ ║ │ │ file,and this function is not applicable to the command line. Refer to _SUB and _END. ║ ║ │ │☼Common functions can also be called as window objects by CALL @,generating many objects ║ ║ │ │ (fiber).Use "KILL \",or "ENVI @FuncName=Name1"(CALL command line by default) to destruct ║ ║ │ │ objects internally and use "KILL \Name1" to do so externally. ║ ║ │ │☼In format4,THIS refers to the real window. ║ ║ │ │☼In format2/4,if a param contains a null character,it should be bracketed by double quotes, ║ ║ │ │ or the param will be separated. ║ ║ │ │☼%&&__LastWinID% is the unique ID of the last-created window and %&__WinID% is the ID of ║ ║ │ │ the current window. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Call of THIS:The function runs in the stack of its caller,mainly to transform the && ║ ║ │ │ initializing codes into a function. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'CHEK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│CHEK [-right -center -scale[:[Size][:PIC]]] [*] ,,[Title],[Event],[Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a checkbox in the window. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * ahead of indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■ChkName:string,shoul be unique,not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■ChkSize:position and size of the checkbox.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■ChkTitle:characters on the checkbox,describing its function or instructions. ║ ║CHEK│ │■ChkEvent:the command to execute when it is clicked.The command should be supported by ║ ║ │ │ WinCMD. ║ ║ │ │■ChkStatus:number,1 or -1 indicates being checked,0,2 or -2 unchecked,smaller than 0 means ║ ║ │ │ disabled,±16 invisible. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│CHEK Check1,L180T336W100H20,MountR.W.,,1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This cammand is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼Environment variable:%ChkName% is the title of the checkbox.To set the title,use "ENVI @ ║ ║ │ │ ChkName=ChkTitle" ║ ║ │ │☼Use "ENVI @ChkName.Check=Val" to set the status of checkbox,0:unchecked,not 0:checked. ║ ║ │ │☼Use "ENVI @ChkName.Enable=[#]Val" to set its serviceability,0:disabled,1:enabled(not to ║ ║ │ │ respond).#:used in a subthread. ║ ║ │ │☼Use "ENVI @ChkName.Visible=Val" to set its visibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. -scale:Internal scaling. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'CODE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│CODE [*nobom] [*transonly] [*[*]]-srcFmt,srcfile,[*[*]]-dstFmt,dstFile ║ ║ │ │CODE *jm PeVar,+|-|^|#|>|.,Num_or_SrcOff,UniB,Off,Bytes[,StepS,Loops[,StepD]] //^Xor#Swap ║ ║ │ │ >RLopMov.Set&And|Or?RetNm[±Of]:BitQuery ΣRetNm:SUM ΠRetNm:product ΩRNm:QCount UnitB:1/2/4/8 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║CODE│FUNC│To transform code. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■*nobom:not to import BOM; *transonly:to transform between -GBK and -BIG5.Not transform but ║ ║ │ │ only translate; ║ ║ │ │■srcFmt:source format; -dstFmt:destination format,including -UNICODE -UNI -UNICODEB -UNIB ║ ║ │ │ -ANSI -UTF8 -UTF7 -GBK -BIG5 -number-.- is a format of natural display and the number is a ║ ║ │ │ standard code ID. */*** before -srcFmt indicates srcfile is an hex string/PEVar to transf- ║ ║ │ │ orm; *- indicates the spaces at the front and back of the srcfile will be transformed; ║ ║ │ │ * before -dstFmt indicates transforming into an hex string and storing the outcome in a ║ ║ │ │ variable; dstFile is compatible with PUTF/GETF. No * indicates a file name; Some special ║ ║ │ │ characters will be transfered to a variable first before being referenced later,and its ║ ║ │ │ input can be of decimal; ║ ║ │ │ With *,- can be absent; For source format,select -BOM,it will be automatically judged ║ ║ │ │ according to BOM; ║ ║ │ │ ** before -srcFmt and -dstFmt indicates the content behind is a name of PE variable. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│CODE -ANSI,src.txt,-UNICODE,dst.txt CODE **-GBK,&V1,**-UNI,&DST ║ ║ │ │CODE *,NiHao,*UNICODE,UNI_HEX_NIHAO CODE *,NiHaoMa,**-GBK,&DST ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'COME' 'NOTE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│COME/NOTE <0|1|ON|OFF> ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║COME│FUNC│To enable/disable notes. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║NOTE│PARA│■1:to enable(default); 0:to disable ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│COME 0 ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'CMPS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│CMPS [-f] [-m] [-bin|-src[:Flag]] [-utf8] [-o] [-u] SrcFile [,] CmpsFile ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║CMPS│FUNC│To compress a file. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■-f:to keep the format mark of the source file,optional.-m:unencrypted,-u:to extract,-o: ║ ║ │ │ old encryption. -bin:encrypt for binary ║ ║ │ │■Flag: 1:del comment line 2:translate \r\n 4:merge blank line 8:del CommentInLine(danger) ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│CMPS A.wcs A.wcz or CMPS -m B.wcs B.wcz or CMPS -u B.wcz B2.wcs ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │A compressed file can be directly loaded for execution,or treated as an embedded script,its ║ ║ │ │icon,bitmap and size unrestricted.Encrypted files can be executed but not extracted. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DATE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DATE⌠*h⌡⌠*r⌡[*space[0]] [*bsys] [*utc:UTC time] [*gmt:GMT time] [*local:LOCAL time] ║ ║ │ │ [*us] [*sys:international time] [VarName] [SubItem] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To returen current system date and time ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ *h:high-accuracy,*r:synchronous high-accuracy timer,at the very head of the param list. ║ ║ │ │ *space indicates outputing space,with 0 indicates completing with 0; *bsys:to output ║ ║ │ │ international time; Other params indicate not obtaining current time but converting the ║ ║ │ │ time.*local *sys followed by 0 indicates the input in the format of *space0. ║ ║ │ │ *us indicates millisecond with 4 decimal places. ║ ║ │PARA│■VarName:to store current system date and time.CurDate by default. ║ ║ │ │■SubItem: y Mon d w h min s ms ws[1] ds Freq Counter respectively indicates year month day ║ ║ │ │ week hour minute second millisecond NumberOfWeeks xxth_day_of_year frequency counter. ║ ║ │ │ Also directly adopt the subitem of Chinese version yy MM DD ww hh MM SS MS W[1]day. ║ ║ │ │ All subitems will be returned if unspecified.The subitem gmt indicates the number of ║ ║ │ │ seconds GMT(timing from 1970.1.1),uptime refers to the number of milliseconds of the PC ║ ║ │ │ running time,utc refers to UTC time with the unit of 100 nanoseconds,timing from 1601.1.1. ║ ║ │ │ uptimens refers to the number of nanoseconds of the PC running time. Counter refers to ║ ║ │ │ high resolution timer Counter. Multiple subitems are ermitted. ║ ║DATE├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│DATE *us SysDate ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The returned outcome will be stored in a specified variable in the form of "Y-M-D|W|H:M:S" ║ ║ │ │ ,the date and time of which are ready to be cut out with MSTR for separate use. ║ ║ │ │☼If VarName is absent,the outcome will be stored in the environment variable %CurDate%,the ║ ║ │ │ possible outcome of the example is "2008-8-8|5|20:8:8". ║ ║ │ │☼International time and LOCAL time can be bracketed with a pair of quotes/double quotes,and ║ ║ │ │ each item is separated by any nonnumeric character. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DEVI' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DEVI [*rescan] [*norescan] [*devclass:DevClass] [$][,MatchLevel[,ExtractDir]] ║ ║ │ │DEVI [*rescan] [*norescan] [*nocheck] [,DevClass] ║ ║ │ │DEVI [*rescan] [*norescan] [,DevClass] ║ ║ │ │DEVI [*rescan] [*norescan] <*sub|*self> [,DevClass[|OptClass]] ║ ║ │ │DEVI $[$],[InstSection],[ActionCode] <===StandardInstall,DefaultInstall,132 ║ ║ │ │DEVI [*rescan] [*norescan] *extract ,[MatchLevel],ExtractDir <===pure extraction ║ ║ │ │DEVI [*rescan] [*norescan] *nocheck ,[MatchLevel],ExtractDir,INF relative path ║ ║ │ │ <===according to INF in the cabinet directly ║ ║ │ │DEVI *rescan[:Fun] <===to rescan hardware changes ║ ║ │ │DEVI listdev:VarName [*devclass:DevClass] [*ALL] [*listdev=i|c|+] [*devid:[h|c|+|@:]ID] ║ ║ │ │ [*comp[+]] [*hwid] [*inst] [*many] [*rescan] //to list can be'preID1''preID2' ║ ║ │ │DEVI *[*]disverify <===to disable driver verifying,** as by force ║ ║ │ │DEVI <*enable|*disable|*remove|*restart>:[h|c|+:]DevInstance/(hc)ID <===to enable/dis... dev ║ ║ │ │DEVI <*update|*install>:HWID:INF <===update/Install dev.Can be 'HWID1:INF1''HWID2:INF2'... ║ ║ │ │DEVI *status:RetNm:[h|c|+:]DevInstance/(hc)ID [*nl] <===query can be'ID1''ID2'... ║ ║ │ │ status:0x400=Problem 0x8000=PRIVATE 0x8=STARTED PROBLEM:0x16=DISABLED ║ ║ │ │DEVI buildcache: [-a: arch] DrvDir //Build Inf auto-cache. ManualRef *infcache:CachFile ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To search for(install) the driver from CAB,INF or a specified directory. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼*dummy indicates not installing really but only for debugging,like viewing DevClass. ║ ║ │ │ *devid:DeviceID,to install specified driver. ║ ║ │ │ *nnverify:not to disable driver signature veryfying; *rverify:to restore the setting of ║ ║ │ │ disabling driver signature veryfying. *7pe[-]:to use Drvload by force. ║ ║ │ │ *inner:not to use Drvload by force. *drvload/*devcon:to use drvload preferentially(default ║ ║ │ │ )/devcon.*retid:VarName,to return the device ID of this installation. ║ ║ │ │ *auto:to automatically shift between whether to handle INF or not(The default is to handle ║ ║ │ │ for CAB.Notice that INF may be overwritten). *sys:to copy to the system directory. ║ ║ │ │ *cab:force to be cab file. *comp+: find ID compatible also. *ret:RetName Report ║ ║ │ │ *IdCah:PeVar: Cache of ID for times *infcache:InfCacheFile *optsys[:v] Systool first ║ ║ │ │ *num:Times ║ ║ │PARA│■To specify the CAB path:"$" before CAB indicates installing driver after extracting it,or ║ ║ │ │ else not installing; can be embedded. ║ ║ │ │■"$" before INF indicates executing standard mode of copying,or else only loading driver ║ ║ │ │ (likely not to load if the device does not exist); ║ ║ │ │■*nocheck:to install by force without checking hardware ID; ║ ║ │ │■*rescan[:Fun]:to rescan hardware changes(the default for installing NT6 by no force).It ║ ║ │ │ can be used alone; Fun:0,1,2,3,4,5,7. *rescan:3 or 2 ║ ║ │ │■*norescan:to disable rescanning hardware changes; ║ ║ │ │■*showdev:display dev. ║ ║ │ │■MatchLevel:the number of sections for DeviceID,separated by &,2 by default; ║ ║ │ │■To query:DeviceID by default,*listdev=c:ID compatible,*listdev=i:unique ID; ║ ║ │ │ *ALL:including devices not existing. ║ ║ │ │■*Surport '"str1""str2""str3"' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│DEVI *retid:&&IDS $%SystemRoot%\DRV.CAB or DEVI MyInf*.INF or DEVI %SystemRoot%\Inf\*.INF ║ ║ │ │DEVI %SystemRoot% ║ ║ │ │DEVI *extract myCab.CAB,,D:\ABC ║ ║ │ │DEVI *dummy *sub D:\ABC //to print DevClass of all INF in D:\ABC to LOGS ║ ║ │ │DEVI *sub D:\ABC,Net //to seek and install network driver in D:\ABC ║ ║ │ │DEVI *devclass:Net $D:\DRV.CAB,,%TEMP% //to seek and install network driver in D:\DRV.CAB ║ ║ │ │DEVI *devid:PCI\VEN_8086&DEV_1229 $D:\DRV.CAB,,%TEMP% //network card Intel8255x ║ ║ │ │DEVI *disable:PCI\VEN_14E4&DEV_16B5&SUBSYS_05001025&REV_10\4&14C08592&0&00E3 //to disable ║ ║ │ │ network card BCM. ║ ║ │ │ DEVI $$D:\MyDrvs\Drv1.inf //♦standard installation mode,DefaultInstall,132 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║DEVI│REM │☼This command applies self-defined(nonsystem)driver-seeking algorithm,capable of extracting ║ ║ │ │ the cabinet quickly for the driver possibly needed,and thus more drivers than needed are ║ ║ │ │ likely to be sought for one device. ║ ║ │ │☼In the CAB,be sure to put each driver in a separate directory and ensure the INF file is ║ ║ │ │ always in the very front of current directory and it has been treated in advance.It is ║ ║ │ │ suggested using the matching program XCAB to produce it. ║ ║ │ │☼If the drivers are in the form of CAB,'$' and [ExtractDir] cannot be set at the same time ║ ║ │ │ in NT5.x OS(unless in the mode of NT6.x or *sys),but they can be absent together. ║ ║ │ │ If '$' is absent,the command will only extract files; If [ExtractDir] is absent,DEVI will ║ ║ │ │ extract the driver in a driver-matching way.INF files will be extracted to "%WinDir%\INF", ║ ║ │ │ SYS to "%WinDir%\SYSTEM32\DRIVERS",and other files to " %WinDir%\SYSTEM32". ║ ║ │ │☼If the drivers are in the form of CAB,in NT6.x OS,with '$',[ExtractDir] is a temporary ║ ║ │ │ directory in %TEMP% if it is null or *(So it is with *sys).The directory will be deleted ║ ║ │ │ automatically after drivers are installed.If [ExtractDir] is present,'$' can be absent. ║ ║ │ │ ENVI will extract files in CAB to a specified directory according to the directory ║ ║ │ │ structure of the CAB.With '$' indicates installing the driver in the destination directory ║ ║ │ │ after extraction.If not to install,the param *extract is needed. ║ ║ │ │☼If other files are to be extracted to a specified directory,replace the directory ║ ║ │ │ separator in the file name with "#",eg,files in "SYSTEM32#WBEM#MOF#XXX.MOF" will be ║ ║ │ │ extracted to "%SystemRoot%\SYSTEM32\WBEM\MOF\XXX.MOF". ║ ║ │ │☼In NT6.x WinPE,DEVI will directly install "%WinDir%\INF" without veryfying the matching of ║ ║ │ │ hardware ID. ║ ║ │ │☼Another function of this command is to seek drivers from local disks,like "DEVI \Windows, ║ ║ │ │ Display". The command is not perfect yet,and it will provide a dialogbox for driver files. ║ ║ │ │ Hence,for this function,technological supports are not available. ║ ║ │ │ *self indicates seeking *.inf in the directory with INF file; *sub indicates seeking in ║ ║ │ │ the directory with INF file as well as in its subdirectory; *self*sub both absent means ║ ║ │ │ seeking in the directory with INF\*.inf ║ ║ │ │☼DevClass: Battery CDROM Computer DiskDrive Display FloppyDisk HIDClass Image Infrared ║ ║ │ │ Keyboard MEDIA Media Monitor Mouse Net PCMCIA Ports Processor SCSIAdapter System USB ║ ║ │ │ Volume fdc hdc ║ ║ │ │☼%&__DEVI.REBOOT%: Need reboot place * of ID with^*(or^). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DFMT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DFMT ,[,DiskVol][,QFDisk][,UnitSize][,CMPS] ║ ║ │ │DFMT* FORMAT params ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To call FORMAT.COM to format disk. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■DrvLetter:to specify a disk to format; ║ ║ │ │■DiskFormat:supportive of FAT,FAT32,NTFS and exFAT.If params are set,format according to ║ ║ │ │ them.If not,format skipped; ║ ║ │ │■DiskVol:Volume to set when formating disk; ║ ║DFMT│ │■QFDisk:number,not 0:quick format; 0:to format by default; If absent,quick format; ║ ║ │ │■UnitSize:number,absent or 0 indicates default,not 0 indicates values as 512*(2^n),ie,512, ║ ║ │ │ 1024,2048,...,65536. ║ ║ │ │■CMPS:number,absent or 0:not to compress,1:to compress.It is only applicable to NTFS. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│DFMT E:,FAT32 or DFMT R:,NTFS,RamDisk,1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command supports formatting hard disk and virtual hard disk,but not floppy disk; ║ ║ │ │☼Unit size is recommended to be default 0 or simply absent; ║ ║ │ │☼This command is executed in silent mode,displaying no information.So be cautious when ║ ║ │ │ operating.The format is in a complete form. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DIR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DIR [--wd:[*]WorkDir] VarName params... ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To get a file list,one line for one file. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║DIR │PARA│☼--wd:[*]WorkDir indicates the working directory to set the commands to execute.Bracket it ║ ║ │ │ with double quotes if there is null character."*" indicates naming the file with the ║ ║ │ │ directory name; ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TEAM DIR &INILIST /s /O:N C:\*.INI| MESS. %&INILIST%@#OK ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │For params behind,please refer to the DOS command DIR.The param B is implied in them. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DISK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DISK [-check] [-skiptp:tp1;tp2] [-skippt:hd1:lpt1;hd1:lpt2] [-from:DrvChar[Tbl]] [-cdrom] ║ ║ │ │ [VarName],[HardDiskID],[PartID],FuncID,[UDiskDrv[Tbl]] [,Option] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To get information of hardisk,unmount or assign drive letter and disk volume. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:string,can be a drive letter,the name of windows system directory beginning with ║ ║ │ │ '\',variable name in string or null; ║ ║ │ │■HardDiskID:number,the sequence number of a hard disk basing 0,can be absent; ║ ║ │ │■PartID:number,the sequence number of a partition basing 1,can be absent; ║ ║ │ │■FuncID:number,0 by default if absent; ║ ║ │ │■UDiskVol:a letter or driver letter,can be absent. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│DISK ,,,1,U: or DISK ,,,2,U: or DISK uDisk,,, or DISK \Windows|\WinXP|\WinNT|\Windows7,,,1,U ║ ║ │ │DISK uAllPart,,1 or DISK Part,0 or DISK ,1,3 or DISK E:,1,4,1 or DISK Vol,0,2 or DISK ,,,3,U ║ ║ │ │DISK -check -from:C-V ,,,1,?:,0x71 //to order existing drive letters ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │1 │ DISK ,,,FuncID[,UDiskDrv][,Option] ║ ║ │REM │☼If "HardDiskID","PartID" and "VarName" are null,"FuncID" shall not.Bit 0 of "Option" means ║ ║ │ │ only sorting out the partition with a drive letter,Bit 1 verifying the validity of ║ ║ │ │ partition,bit 2 skipping patition of 0xEE/0xEF type,bit 4 sorting out hidden partition ║ ║ │ │ with a drive letter,bit 4 sorting out CDROM as well,and bit 5 limiting driver table. ║ ║ │ │ The command will assign drive letters according to following "FuncID": ║ ║ │1.1 │ DISK ,,,1 or 4[,UDiskDrv][,Option] //4 means bit 2 of Option is set ║ ║DISK│ │ 1.To reassign drive letters to all the visible partitions according to the sequence ║ ║ │ │ numbers of the fixed hard disk and partions,example 1; ║ ║ │ │ UDiskDrv=?, means the fixed hard disk follows. ║ ║ │1.2 │ DISK ,,,2 or 22[,UDiskDrv] //22 is the first main partition; ║ ║ │ │ 2.To assign drive letters to the first main partition of hard disks and then to other ║ ║ │ │ partitions,example 2; ║ ║ │ │ UDiskDrv=?, means the fixed hard disk follows. ║ ║ │1.3 │ DISK ,,,3,UDiskDrv[,Option] ║ ║ │ │ 3.Not to ajust drive letters of fixed (and removable) hard disks,but the ones of U disk, ║ ║ │ │ example 10; ║ ║ │2 │ DISK VarName[,,,FuncID][,UDiskDrv] ║ ║ │ │☼If "HardDiskID" and "PartID" are both null,but "VarName" not,the command will perform ║ ║ │ │ respective functions according to the following two forms of "VarName": ║ ║ │2.1 │ DISK VarName ║ ║ │ │ 1.If "VarName" is in the form of a string variable,the command will assign the number of ║ ║ │ │ hard disks of the computer to the specified "VarName",example 3; ║ ║ │2.2 │ DISK \system directory name[,,,FuncName][,UDiskDrv] ║ ║ │ │ 2.If "VarName" is the system directory name beginning with '\',the command will seek and ║ ║ │ │ load the system registry and assign drive letters according to the assignment system of ║ ║ │ │ the hard disk.To seek more than one possible system directory names,use '|' to separate ║ ║ │ │ them.(example 4); If this fails,the command will continue with the subsequent plan of ║ ║ │ │ drive letter assignment according to the value of "FuncID",example 1,2 and 10; ║ ║ │3 │ DISK VarName,,PartID ║ ║ │ │☼If "HardDiskID" is null,but "PartID" not,the command will assign the number of mounted ║ ║ │ │ partitions of hard disk of the computer to a specified "VarName",example 5; ║ ║ │4 │ DISK VarName,HardDiskID ║ ║ │ │☼If "HardDiskID" is not null,but "PartID" is,the command will assign the number of mounted ║ ║ │ │ partitions of the specified hard disk to a specified "VarName",example 6; ║ ║ │5 │ DISK [VarName],HardDiskID,PartID ║ ║ │ │☼If "HardDiskID" is not null,nor is "PartID",the command will dispose in the following ║ ║ │ │ three ways according to the format of "VarName": ║ ║ │5.1 │ DISK ,HardDiskID,PartID ║ ║ │ │ 1.If "VarName" is null,the assigned drive letter and volume of this partition will be ║ ║ │ │ unmounted,example 7; ║ ║ │5.2 │ DISK drive letter or volume,HardDiskID,PartID,[FuncID] ║ ║ │ │ 2.If "VarName" is a drive letter or volume(like E: or E:\),the command will assign a ║ ║ │ │ specified drive letter or volume to the partition.If "VarName" is absent or 0,or the ║ ║ │ │ partition is a hidden one,the command will not assign any drive letter or volume. ║ ║ │ │ If "FuncID" is not 0,the command will assign a drive letter or volume whether the ║ ║ │ │ partition is hidden or not,example 8; ║ ║ │5.3 │ DISK VarName,HardDiskID,PartID ║ ║ │ │ 3.If "VarName" is not null or in accordance with the format of drive letter,the command ║ ║ │ │ will assign the drive letter of the partition to a specified "VarName",example 9; ║ ║ │ │☼"UDiskVol" indicates the initial drive letter assigned to the USB Flash Disk when ║ ║ │ │ the drive letters are being automatically sorted out.If absent,the drive letters of the u ║ ║ │ │ disk will not be sorted out; ║ ║ │ │☼The command for sorting out drive letters should be placed at the front of PECMD.INI. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DISP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DISP [-confirm] [-delay] [=DispID] [@PosMtrx] [S MultiDispMode] [P] [W HrzRsl H VerRsl] ║ ║ │ │ [B ColorDepth] [F RefreshRate] [T Wait ms] [O Ori] ║ ║ │ │DISP [=DispID] VarName //To query the current or all possible configs,multiline, ║ ║ │ │ separated by TAB in the line. -sort:sort ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set display params. *delay:to write to registry only.MultiDispMode: ║ ║ │ │0x81=1:to display,0x82:to copy,0x84:to extend,0x88=2:to display. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║DISP│PARA│■To specify the screen params respectively.All absent,set automatically.DispID starts from ║ ║ │ │ 0,P:to set as the main display. -size:only_size -reset -delay -ori:Quey_Orient ║ ║ │ │ PosMtrx:X0:Y0:X1:Y1:X2:Y2:X3:Y3... coordinates of the base positions in all displays. ║ ║ │ │ -bright[?]:Val/Name -guis:gui mode ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│DISP =1 S0x84 P W1024 H768 B32 F70 T5 or DISP ? &CUR DISP ?* =0 &ALL or DISP =1 S0x84 P ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The first three groups of params can be used separately.Use DISP f75 to set the RefreshRate ║ ║ │ │as 75. %&YesNo%=Yes:Set NO:Ret TIMEOUT:Ret on timeout ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DTIM' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│DTIM [-right] [*] ,,[InitVal],[Event],[Type] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a date/time indicator. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │PARA│■Name:string,should be unique and not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■Shape:position and size of the editbox.The format is:,L,T,W ║ ║ │ │ and H are respectively followed by corresponding numbers. ║ ║ │ │■InitVal:string,characters to input when initializing the editbox.\n or the native newline. ║ ║ │ │ The input of a comma,as well as an event,can be achieved by transfering to a variable. ║ ║DTIM│ │■Event:the command to execute when ENTER is pressed in the editbox or the editbox is double ║ ║ │ │ clicked.It should be a valid one supported by WinCMD. ║ ║ │ │■Type:number(accumulated),0 by default as normal editbox,minus:disabled,0x10bit:invisible, ║ ║ │ │ 0x20bit:long date format,0x40bit:time format,0x80bit:short century date format,short date ║ ║ │ │ format by default,0x100bit:to ajust with up and down,0x200:with checkbox. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│ DTIM Dtim1,L32T244W240H24,2008; 5; 12,Mess,0x200 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is generally located between _SUB and _END. Refer to _SUB,CALL. ║ ║ │ │☼Use "ENVI @Name.Enable=[#]Val" to set its serviceablity.0:disabled; 1:enabled(not to ║ ║ │ │ respond).#:used in a subthread. ║ ║ │ │☼Use "ENVI @Name.Visible=Val" to set its visiblity.0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @Name.VAL=Val1; Val2; Val3" to set year,month and day or hour,minute and second. ║ ║ │ │☼Use "ENVI @Name.VAL=?Name1; Name2; Name3; Name4; Name5" to return the mark of year,month, ║ ║ │ │ day and week or hour,minute and second.mark: ║ ║ │ │ 0:effective,1:to cancel checked,-1:failed. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'EDIT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│EDIT[-|+.*=] [-right] [-center] [-vcenter] [-rich] [-3D] [*] ║ ║ │ │ ,,[EditBoxContent],[EditBoxEvent],[EditBoxType],[Color],[Type] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To establish a single-line/multiline editbox. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■- indicates horizontal scroll bar; | vertical scroll bar; + no frame; .not to convert \n, ║ ║ │ │ convert otherwise; * to preinterpret the event(variable); = the content of the editbox is ║ ║ │ │ the file name.The params above should closely follow the command word "EDIT" without any ║ ║ │ │ null character,not sequence sensitive. ║ ║ │ │ The text is left-aligned by default,-right:right-aligned,-center:center-aligned,-rich:to ║ ║ │ │ to set colors,-3D:3D profile. -u2d:unix2dos ║ ║ │ │ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■EditBoxName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■EditBoxShape:position and size of the editbox.The format is:, ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■EditBoxContent:string,characters to input when initializing the editbox. \n or native ║ ║ │ │ newline.The input of a comma,as well as an event,can be achieved by transfering to a ║ ║ │ │ variable. ║ ║EDIT│ │■EditBoxEvent:the command to execute when ENTER is pressed in the editbox or the editbox is ║ ║ │ │ double clicked.It should be a valid one supported by WinCMD. ║ ║ │ │■EditBoxType:number(accumulated),0 by default as a normal editbox,minus:disabled,1:password ║ ║ │ │ inputbox,8:read-only,4:multiline,0x10bit:invisible,0x20bit:editable and supportive of ║ ║ │ │ automatical newline,0x40/0x800bit:to jump to the end/EOL; 0x100:to receive a name of file ║ ║ │ │ dragged in; 0x200:to receive all names of files dragged in,multiline; 0x400:number, ║ ║ │ │ compatible:separate 2=disable,3=read-only. ║ ║ │ │■Color:number,including text color and background color.Format:"Num1#Num2",default color if ║ ║ │ │ absent. ║ ║ │ │■Font:The format is "font size[:Font]". ║ ║ │ │ Other adornment can be attached to the font name like [**BbUuIiSs#Weight#Width#CharSet# ║ ║ │ │ Quality#Orientation#Escapement#OutPrecision#ClipPrecision#PitchAndFamily].Also applicable ║ ║ │ │ to settings of other fonts. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│EDIT Edit1,L32T244W240H24,C:\Windows,ENVI @Label1=%Edit1%,0x224 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is generally located between _SUB and _END. Refer to _SUB,CALL. ║ ║ │ │☼Use "ENVI @EditBoxName=TextContent" to set the content of the editbox. Refer to ENVI. ║ ║ │ │☼Use "ENVI @EditBoxName.Enable=[#]Val" to set its serviceablity.0:disabled; 1:enabled(not ║ ║ │ │ to respond).#:used in a subthread. ║ ║ │ │☼Use "ENVI @EditBoxName.ReadOnly=Val" to set the status of read-only; 0:not read-only,not 0 ║ ║ │ │ :read-only. ║ ║ │ │☼Use "ENVI @EditBoxName.Visible=Val"to set its visiblity.0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @EditBoxName.LINE=Val" to make some line visible,but the line cannot be queried. ║ ║ │ │ Line ID starts from 1. 0 and 1 indicates jumping to the line ID 1 directly,and "-1" to ║ ║ │ │ the end. ║ ║ │ │ Being led by : indicates a relative position.A minus indicates the number of lines to ║ ║ │ │ scroll up. ║ ║ │ │☼Use "ENVI @EditBoxName.Val=?VarName" to obtain the realtime content. ║ ║ │ │☼Use"ENVI @EditBoxName.Color=[:FontSize[:Font:]BITUL;][Color[#BkColor]][;StartPos[;EndPos]]" ║ ║ │ │ to set colorful font.The position is calculated according to the content,starting from ║ ║ │ │ 0.Position being absent indicates the currently-selected range.-1 indicates the end. ║ ║ │ │ The EndPos is -1 by default.A Chinese character and a line break occupy one position. ║ ║ │ │ B:bold,I:italic,U:underline,L:link,T:strickout. ║ ║ │ │ The position can be "LineID:[ColID]",LineID and ColID start from 1. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'EJEC' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│EJEC [C-|U-|X:|DiskNum],[OPID] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To eject or close the specified CDROM drive tray; To romove the specified USB drive. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■Param "C-":to operate all possible CDROM drive trays; ║ ║ │ │■Param "U-":to remove all possible USB disks; ║ ║EJEC│ │■Param "X:":to operate CDROM drive or USB disk with the specified drive letter; ║ ║ │ │■OPID:to specify the operation of ejecting or closing CDROM drive tray.Absent,0 by default, ║ ║ │ │ indicating ejection,1:to close,R:to remove the USB disk. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│EJEC C- or EJEC U- or EJEC H: or EJEC H:,1 or EJEC C-,1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is applied to a simplified PE which does not have the icon for u disk ║ ║ │ │ management in its system tray; For PE which has it,it is advised to use the system tray. ║ ║ │ │☼Do not use this command in a config file; The command of INIT with the param "I" will ║ ║ │ │ install the function of this command to the menu of system tray. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'ENVI' 'SET' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│ENVI[.$#%~~.*=<>-x1-[Lfr:Lto[:Rfr:step]]] [&[&]|^][$][#][-][*][ ][[~Destructor~]Name][=Val] ║ ║ │ │ENVI[.$#%~~.*=<>] &::[Name][=Val] //global PE variable ║ ║ │ │ENVI-copy PEVarName=SrcPEVarName[;SrcOff;Len;DstOff] //copy binary object, []: part_copy ║ ║ │ │ENVI-cmp PEVarName=SrcPEVarName[;SrcOff;Len;DstOff];[S|s|I|i] //Compare,S/s/I/i:String, ║ ║ │ │ S/I:WCHAR, s/i:char,I/i no case, S/s/I/i whithout Len means strcmp without len ║ ║ │ │ENVI-tom PE_VarName=SrcPEVarName //UNICODE to multibyte string(like GBK) ║ ║ │ │ENVI-tow PE_VarName=SrcPEVarName //multibyte string(like GBK)to UNICODE ║ ║ │ │ENVI-addr [AddrVarName][; LenVarName]=SrcPEVarName //to return memory address,length of byte ║ ║ │ │ENVI-swap PE_VarName=PE_VarName2 //to swap the content of an object. ║ ║ │ │ENVI-make PE_VarName=[Addr|&PEVarName[@[$]Offset]][;[*][[$]ByteNum]] //create a PE variable ║ ║ │ │ according to the memory address and length. * indicates a character string. $:N Byte ║ ║ │ │ENVI-mkdummy PE_VarName=[Addr][;[*][[$]ByteNum]] //the same as -make,but only create a dummy ║ ║ │ │ Addr may be PEVAR[@[$]Offset] or (shm)ShmCtrName[@[$]Offset] ByteNum=~:from obj ║ ║ │ │ENVI-mkfixdummy PE_VarName=[Addr][;[*][ByteNum]] //the same as mkdummy,but memory is fixed ║ ║ │ │object using the original memory. ║ ║ │ │ENVI-zero PE_VarName=[[$]Val][@[$]Off]][;[$]Num] //clear memory, default:0.$:N B [times] ║ ║ │ │//suffix-env //to temporarily cancel forcelocal so as to operate the environment variable.It ║ ║ │ │should be the first suffix. ║ ║ │ │//suffix-env //temporarily cancel forcelocal.Should be the first suffix. ║ ║ │ │//suffix-std //temporarily set EnviMode=1.Should be the first suffix. ║ ║ │ │//suffix-ret[TraceLevel] //to trace a specified level(1 by default) and then operate the ║ ║ │ │PE_VarName,like the return of a function. ║ ║ │ │//suffix-get[TraceLevel] //to trace a specified level(1 by default) and then obtain the ║ ║ │ │PE variable,like transfering a function to a PE_VarName. ║ ║ │ │//suffix-raw //the part after = will not be interpreted. ║ ║ │ │ENVI-DataType PE_VarName=Num[:[~]ByteNumOffset] //to produce binary data of specified ║ ║ │ │type in PE object. BOOLEAN=bool=1 BOOL=enum=4 ║ ║ │ │ENVI?DataType[0[@]] SrcPeVarName=VarName[:[~]BitNumOffset] //to obtain binary data of speci. ║ ║ │ │type in PE object. 0:to fill zero.@:to remove 0x. s: for sign. ~: unit of type ║ ║ │ │//DataType:char wchar short int long longlong int64 float double ldouble ptr(pointer) ║ ║ │ │ENVI^ is exclusively used in control command.^ refers to the first suffix. ║ ║ │ │SET-def ABC //to ensure there is variable ABC of this level.If not,add a dummy variable; ║ ║ │ │If so,don't do anything.ENVI &&ABC also works. ║ ║ │ │ENVI-ex ReturnVarName=[&[&]]VarNameQuery //to check if such a variable exists.& indicates PE ║ ║ │ │variable,&& PE variable of this level,otherwise environment variable. ║ ║ │ │The first prefix before VarName ^ indicates an environment variable (ENVI ^ABC=1).Likewise, ║ ║ │ │%^VarName% is also an environment variable; It is out of the control of FORCELOCAL. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set or eliminate environment variables. SET is used for PE variable.SET equals ENVI &, ║ ║ │ │SET-def and SET & equal ENVI &&.The others are the same as ENVI.-[f1:t1[:f2]] for vector. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■To specify the name and value of an environment variable. ║ ║ │ │ "." indicates converting \n into newline.For a control,it indicates disabling newline."$" ║ ║ │ │ indicates converting the value into corresponding characters basing on hex,8 a group or ║ ║ │ │ separated by space; "%" indicates converting basing on decimal(default),separated by space ║ ║ │ │ ; Both are UNICODE. "~" indicates interpreting the variable once again; "~~" twice more. ║ ║ │ │ "*" indicates if there are many rounds of conversion based on "$""%",[*ReptFactor] refers ║ ║ │ │ to data.= indicates repeating according to the spaced word,[*ReptFactor] refers to a word. ║ ║ │ │ # coordinating with $% indicates being converted into corresponding bite/memory mode. ║ ║ │ │ <> aim at PE variables,< indicates appending at the back,while > insertion at the front. ║ ║ │ │ "$" indicates setting environment variables of system level and "#" of user level,both of ║ ║ │ │ which can be used simutaneously,broadcast all programs and wait for 5-second timeout when ║ ║ │ │ the system is busy.*- coordinate with $#.- indicates the THREAD broadcast backstage; ║ ║ │ │ * indicates only setting without broadcast.A later broadcast can be made by using ENVI. ║ ║ │ │ -x1 -x2 -x3 indicates interpreting the expression 1~N times. ║ ║ │ │ "&" indicates setting a function or PE variables of a window. ║ ║ │ │ "&&" indicates the function of defining,ie,defining or setting variables of current level. ║ ║ │ │ If such variables do not exist,they will be added.If exist,only set environment variables ║ ║ │ │ used in this program.Thus "&&" will also help to shield/protect variables of higher level. ║ ║ │ │ Environment variables without = indicates deleting them,like "ENVI ABC". ║ ║ │ │ PE variables without = means only clearing their content,like "ENVI &ABC". ║ ║ │ │ Set environment variables as null if their values are not specified,like "ENVI ABC=" or ║ ║ │ │ "ENVI &ABC=". ║ ║ │ │ "ENVI *"(Name and Val absent) indicates transfering the drive letter for CDROM to a system ║ ║ │ │ environment variable in the form of CDROM0,CDROM,CDROM1 and CDROM2. ║ ║ │ │ "ENVI $" indicates broadcasting the notification of changes after setting following system ║ ║ │ │ environment variables: ║ ║ │ │ Favorites Favorites Directory ║ ║ │ │ Desktop Desktop Directory ║ ║ENVI│ │ StartMenu StartMenu Directory ║ ║SET │ │ Startup Startup Directory ║ ║ │ │ Programs Programs Directory ║ ║ │ │ SendTo SendTo Directory ║ ║ │ │ Personal MyDocument Directory ║ ║ │ │ QuickLaunch QuickLaunch Directory ║ ║ │ │■"ENVI" indicates informing all programs of the changes of environment variables in the ║ ║ │ │ registry(5-second timeout,multithread or multiproess is applied to avoid feign death). ║ ║ │ │■Destructor:only effective the first time to define the PE variable."Destructor VarRef ║ ║ │ │ VarVal" will be called when the PE variable quits its definition range. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│ENVI TEMP=%SystemDrive%\TEMP or ENVI &&ABC=123 or delete ABC:ENVI &ABC or ENVI$ NL=0d 0a ║ ║ │ │or ENVI$ DATA=*1M 30 0d 0a or ENVI= DATA=*1K 0x00 or ENVI$# &DATA=*1K 30 ║ ║ │ │or SET-def ~ClosehandleX~h=0.As destructing,ClosehandleX &h %&h% or SET~-x1-[1:2] B%%d=A%%d ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Progams executed by "EXEC" will automatically inherit the environment variables of this ║ ║ │ │ PECMD.In other words,the environment variable set by "ENVI" without "$" in the config file ║ ║ │ │ is still effective in the subsequent "EXEC" programs.WinName and CtrlName can also carry & ║ ║ │ │☼ENVI^ EXPORTLOCAL=1:to enable automatically inherting the PE variables of this PECMD. ║ ║ │ │☼ENVI^ EXPORTLOCAL=0:to redisable automatically inheriting the PE variables of this PECMD. ║ ║ │ │ (default). ║ ║ │ │☼ENVI^ EXPORTLOCAL=&1:to enable automatically inherting the PE variables of this PECMD,only ║ ║ │ │ effective for the current and subsequent level,used in thread. ║ ║ │ │☼ENVI^ EXPORTLOCAL=&0:to redisable automatically inheriting the PE variables of this PECMD ║ ║ │ │ (default),only effective for the current and subsequent level,used in thread. ║ ║ │ │☼ENVI^ FORCELOCAL=1:to force all variables to be PE variables.This is the simplest way to ║ ║ │ │ achieve muitithread or multitask(concurrent window). ║ ║ │ │☼ENVI^ FORCELOCAL=0:to cancel the forcing above (default). ║ ║ │ │☼ENVI^ EnviMode=0:mode compatible with 4.0,default.A dummy variable will not be ║ ║ │ │ interpreted.Variables are automatically interpreted non-sequentially in multiple rounds. ║ ║ │ │☼ENVI^ EnviMode=1:standard mode.A dummy variable will be interpreted as null.Variables are ║ ║ │ │ interpreted in turn once, but times for VarName before =. (suggested) ║ ║ │ │☼The command can be applied to refreshing environment variables when params are absent or ║ ║ │ │ only with "$".Null character is permitted.Pay attention to the unnecessary null characters ║ ║ │ │☼In standard mode,variables undefined are left dummy rather than uninterpreted(a status of ║ ║ │ │ uncertainty actually). ║ ║ │ │☼Attention:Null characters ahead and behind are permitted,like TEAM ENVI ABC= 123 |... ║ ║ │ │ ABC becomes " 123 " instead of "123". ║ ║ │ │☼"~" indicates that the variable will be interpreted once more,ie,after it is interpreted, ║ ║ │ │ the data will be used as the variable name with its value returned. ║ ║ │ │ "~." indicates that the data will be used as a param of a function with its value returned ║ ║ │ │ "~*" indicates being interpreted according to "~." if the variable is in accordance with ║ ║ │ │ the param format,otherwise according to "~"."~~" means being interpreted as this twice. ║ ║ │ │ "~","~~","~." and "~*" can be called repeatedly. ║ ║ │ │☼Null character is permitted.Notice that null characters at the end will all be abandoned. ║ ║ │ │ like:ENVI A=123 | ENVI B=123 ║ ║ │ │ //Null characters behind A=123 are effective while the ones behind B=123 are abandoned. ║ ║ │ ├────────────────────────────────────PE Variable ─────────────────────────────────────────────╢ ║ │ │☼PE varibles are created and assigned by SET-def A=,SET &A= or ENVI &&A= (only assign if ║ ║ │ │ already existed) at current level; They are automatically destructed after quitting their ║ ║ │ │ range and cannot be deleted but cleared or modified to ensure their stable sharing. ║ ║ │ │☼PE varibles have the effect of shielding,ie,varibles of lower level shield the ones of ║ ║ │ │ higher level with the same name.Be sure to use PE variables in multithread so as to avoid ║ ║ │ │ mutual interference. ║ ║ │ │☼Access PE variables by %&VarName%,priority given to sublevel.When the function returns,PE ║ ║ │ │ variables of the level will be automatically released.Use SET directly for PE variables. ║ ║ │ │☼Global PE variable:accessible and operable for all functions and threads,not automatically ║ ║ │ │ destructed and effective throughout the program running. ║ ║ │ │☼PE variables behind the sharing point will be automatically copied to the subthread after ║ ║ │ │ a thread is created. ║ ║ │ │☼Variables of windows and functions with lasting stacks (*function)are shared while those ║ ║ │ │ of the subsequent functions or blocks are not shared and they are automatically duplicated ║ ║ │ │ in the subthread. ║ ║ │ │☼Programs executed by "EXEC" will not automatically inherit the PE variables of this PECMD. ║ ║ │ │ WinName and CtrlName can carry &. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Value transfer and referencing transfer.Value transfer:It is the value that is transfered ║ ║ │ │ and it is one-way transfer from the caller to the callee,like %ABC% with a pair of %. ║ ║ │ │☼Referencing transfer:It is the variable name that is transfered and it is two-way from the ║ ║ │ │ caller to the callee.Numeric values can be transfered back,like ABC without a pair of %. ║ ║ │ │◙Attention should be paid that referencing transfer supports binary inclucing the binary 0, ║ ║ │ │ which is not suitable for value transfer. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To refresh the desktop: ENVI @@DeskTopFresh=[clearicon][;][1/2/4/8/16][;[-/+]PATH] ║ ║ │ │ //1:to refresh the desktop and the window of My Computer. 4:for change ║ ║ │ │ //2:to refresh the desktop professionally only.clearicon:to clear the icon cache(first). ║ ║ │ │ //8:to refresh ICO and file associations. ║ ║ │ │ //16[:func]:to refresh path(Desktop), -to remove,+to add,or refresh. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To enable the tray menu: ENVI @@TaskIcoMenu=1 ║ ║ │ │☼To disable the tray menu: ENVI @@TaskIcoMenu=0 ║ ║ │ │☼To switch between tray menu enabling/disabling: ENVI @@TaskIcoMenu=2 ║ ║ │ │☼It is generally used for hotkeys of system level and it is the system tray to be operated. ║ ║ │ │ If it is used in a program,it is of program level and eliminated automatically when the ║ ║ │ │ program exits. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼HELP default color: ENVI^ HelpColor=[*CMDLineHeight] [ForeColor][#BkColor] //global ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼String breaking: ENVI^ Arg=*[BreakCharSet]BrokenStrings ║ ║ │ │ = being followed by * indicates that the breaking character between the broken strings ║ ║ │ │ will be treated as a dummy argument,or else abandoned.The params obtained by ENVI^ Arg= ║ ║ │ │ will overwrite the param list of the current function or LAMDA.The referencing of these ║ ║ │ │ params is the same as those of a function. ║ ║ │ │ BreakCharSet:If null,indicated as :sp:; Particularly,:sp: indicates null character; ║ ║ │ │ ] is indicated as \] and \ as \\;Variables are supported to transfer such characters. ║ ║ │ │ [] outside of BreakCharSet cannot be absent.If = is followed by *,the dummy arguments of ║ ║ │ │ odd number are treated as words,while the ones of even number are the constitution of ║ ║ │ │ BreakCharSet(null possibly). ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Clipboard: ENVI^ Clipboard=Str //variables supported ║ ║ │ │☼Clipboard: ENVI^ Clipboard?=VarName //to query ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query the version of a file: ENVI ?FileVarName[,ProduVerName]=FVER,FileName ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To obtain the name of a dragged file: ENVI ?[SingleName],[AllName]=DROPFILE,wParam ║ ║ │ │ The correspondant message is WM_DROPFILES.wParam is the first message param. ║ ║ │ │ SingleName indicates returning the first,while AllName returning all in multiline. ║ ║ │ │ Eg: ENVI @LABE1.MSG=0x0233::wp,lp, CALL OnDrop1 %wp% %lp% ║ ║ │ │ _SUB OnDrop1 ║ ║ │ │ TEAM ENVI ?&&F1,&&FS=DROPFILE,%1| ENVI @LABE1=%&FS% ║ ║ │ │ _END ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To move the position of mouse: ENVI @@Cur=X;Y //"; " or ",",the same below. ║ ║ │ │☼Query mouse_position : ENVI @@Cur=?[@HWND;][[Nm]X][;[Nm]Y][;POINTNm][;KeyNm][;RcNm][;InNm] ║ ║ │ │☼To query the position of mouse: ENVI @WinName.Cur=?[VarNameX][;VarNameY] ║ ║ │ │ [;VarNameCustCoordX][;VarNameCustCoordY] ║ ║ │ │☼To query the position of mouse: ENVI @WinName.Cur=X;Y ║ ║ │ │☼To display or hide mouse: ENVI @@Cur=*Num //0:to hide,1:to display,should be paired. ║ ║ │ │☼To query WinID and CtrlID: ENVI @WinName or CtrlName.ID=?[WinIDVarName][; CtrlIDVarName] ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query the position of a file:ENVI ?[StartVarName][,LenVarName][,CluSizeVarName] ║ ║ │ │ [,DiskBlkListVarName][,BlkNumVarName][,PartStartVarName] ║ ║ │ │ [,DEVRetVarName]=FPOS,FileName ║ ║ │ │ DiskBlkList:indicating the distribution in partitions,one line for a block with its start ║ ║ │ │ and lenghth in it successively.Start -1 indicates special compression or hole. ║ ║ │ │ //65535 blocks at most; 65536 indicates being unfinished possibly,byte as the unit,- ║ ║ │ │ before BlkNum indicates the address relative to the 0 cluster.Start -38:for resident file. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query the window including the point: ENVI ?[Name][,TopName]=PWIN,[x],[y][,Flag] ║ ║ │ │ Flag:1=skip hidden 2=skip disabled 4=skip transparent 0:all default=3 ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼MouseCaptureA: ENVI @WinName or CtrlName.MouseCapture=1/0 // 1:enabled,0:released ║ ║ │ │☼MouseCaptureB: ENVI @WinName.MouseCapture=#1/#0 // #1:enabled,#0:released ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼ENVI @@EATEKEYS=CombKey1 CombKey2 ... //to intercept keys,with the same format as HOTK, ║ ║ │ │ but null character is not permitted. ║ ║ │ │ like ENVI @@EATEKEYS=VK_LWIN VK_RWIN ALT+VK_TAB Alt+VK_ESCAPE Ctrl+VK_ESCAPE ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼ENVI @@RMENU=VarName; FileName //to obtain the right click menu,multiline. ║ ║ │ │ The blank line generally indicates separators. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Command Alias: ENVI^ Alias [*opt] CMDAlias=[CMDFrontHalf] //the alternative command alias ║ ║ │ │ for the front half of the command.*opt:to optimize. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Switch ENVI $# Broadcast:ENVI^ EnviBroad=0/1/- //1:enabled(default); 0:disabled; ║ ║ │ │ -:backstage ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Switch &&__arg param list(compatible to the lite version):ENVI^ __arg=0/1 // 1:enabled; ║ ║ │ │ 0:disabled(default) ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼PECMD memory varible:ENVI^ memvar=[?RetVarName,][:ByteNum:]AddrOffset,Val //to modify/ ║ ║ │ │ query PECMD memory variable. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼PECMD memory varible:ENVI^ LoadEnvi [[HKCU\]SubPath|-] [VarName] //to update [EnviVar] ║ ║ │ │ from registry,cautious!! ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query parent process ID: ENVI ?RetVarName=PPID,ProcID ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query if this process is an administrator. ENVI ?RetVarName=ISADMIN ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼BkProgress: ENVI @WinName or CtrlName.percent=[Percent][RLCVEF][:BkColor][:PrgColor] ║ ║ │ │ [:TxtColor][:TXT] ║ ║ │ │☼ENVI @@percent=WinID:[Percent][RLCVEF][:BkColor][:PrgColor][:TxtColor][:TXT] ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Secret Mode(to clear after memory is out): ENVI^ zero=0/1 //0:disabled(default); 1:enabled ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To disable X64 Fs Redirection: ENVI^ DisX64=1,OldCfg //Two commands should be used in ║ ║ │ │ To restore: ENVI^ DisX64=0,%OldCfg% //pair and Varname remain the same without modifying ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query version of windows: ENVI ?RetName=WinVer[+][;[^]*|File] //or ProductVer of file ║ ║ │ │ *:Kernel File, ^:FileVer, +:Fix WinVer with File ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query version of windows: ENVI ?RetVarName=ispe ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To query program/system's bits: ENVI ?StrNm,NumNm=PEBIT,[FILE_System32Dir] //x86/x64/ia64 ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼Query firmware envi_var: ENVI ?[$.]RetName[,AttrNm]=FVAR,VName[;NameSP_GUID] ║ ║ │ │ non_pe_var or $: return HEX .:wstring ║ ║ │ │☼Operate firmware envi_var: ENVI ?[-v] [Attr]=FVAR+[$#%],VName[;NameSP_GUID],Val ║ ║ │ │ //empty val to delete. -v:Val is name. # byte mode. $ HEX. % dec mode. ║ ║ │ │ ENVI ?$&v=FVAR,BootOrder ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMX │'EXEC' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│EXEC[|][*[1|N|-]] [-catch] [-cmd:[:ms:]CMD][-clone:VarName] [-[h]pid:VarName] [-no64] ║ ║ │ │ [-user:[BASE]UsrName [-passwd:[BASE]PassWd|-passwd*BASEPassWd]] [-limit] [-wd:[*]WorkDir]║ ║ │ │ [-REALTIME] [-HIGH] [-ABOVENORMAL] [-NORMAL] [-BELOWNORMAL] [-LOW] [-IDLE] [-mem] ║ ║ │ │ [-min] [-max] [-show] [-wait] [-hide] [-doc:[mode]] [-hook] [-runs] [-job] [-u2d] ║ ║ │ │ [-raw] [-logs:[?][*]LOGSFile] [-nowin] [-shel:"AutoCMD"] ║ ║ │ │ [-exe:execfilename] [-err] [-err+] [--] NAME[+]=[=][!][*][@][$][&][Param] ║ ║ │ │EXEC -poprmenu[:x.y] FileName //to popup the right click menu of the file. ║ ║ │ │EXEC -runrmenu:MenuItemName FileName //to execute the specified item of the right click menu ║ ║ │ │EXEC /InstallService name ⌠--gui-⌡[--delayservice ms] [--wait] [--nowait] [--nojob] [--1] ║ ║ │ │ [--hide] [--killwin Title] [--killwin2] [--idle ms [--idlewait]] cmd_and_params ║ ║ │ │EXEC /RemoveService name ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To execute EXE,BAT and CMD programs. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■To specify the program path and params.The leading params are as follows(can be used ║ ║ │ │ simutaneously regardless of the sequence): ║ ║ │ │☼-cmd:[:[*]ms:]CMD indicates the command to execute at a max/timer(*) time.1000ms by default.║ ║ │ │ and the latter ":" can be absent if there is no confusion.It should be the first switch. ║ ║ │ │☼-limit indicates executing in a safe mode without administrator privileges; ║ ║ │ │ --job refers to the mode of job,coordinating with = to ensure the child process to be ║ ║ │ │ killed together. ║ ║ │ │ /REALTIME real-time priority,/HIGH priority of HIGH,/ABOVENORMAL priority of ABOVENORMAL, ║ ║ │ │ /NORMAL priority of NORMAL,/BELOWNORMAL priority of BELOWNORMAL,/IDLE /LOW lowest priority ║ ║ │ │☼-- indicates the end of switch -.It is only used when confusion arises between the switch ║ ║ │ │ and command; ║ ║ │ │☼-wait or "=" indicates waiting for the end of execution; -ex1:PE varibles of the closest ║ ║ │ │ level will be inherited as environment ones. -waiti indicates waiting for GUI INIT. ║ ║ │ │☼-exe:execfilename indicates the name of an executable file,capabile of executing files ║ ║ │ │ with nonstandard extension,like,myinstall.tmp.At this time, behind is merely part ║ ║ │ │ of the command line.It can be arbitary,irrelevant and even absent; ║ ║ │ │☼-wd:[*]WorkDir indicates setting the working directory of EXE files,quoted if there is ║ ║ │ │ null character."*" indicates naming the file afer the directory; ║ ║ │ │ -wd:** refers to the directory containing the this EXE file itself. ║ ║ │ │ -wd:* refers to the directory containing the APP EXE file. ║ ║ │ │☼-code: to specify the source code. ║ ║ │ │☼-pid:varname indicates storing pid in varname so that the process can be KILLed accurately ║ ║ │ │ -hpid:varname indicates storing handle of pid. ║ ║ │ │☼-hide,"!" or "*" indicates executing in a hidden way; ║ ║ │ │☼-show indicates executing in a visible way; ║ ║ │ │☼-min,"^" or "_" indicates executing minimally; ║ ║ │ │☼-max or "&" indicates executing maximally; ☼-u2d unix2dos ║ ║ │ │☼-doc[:mode] indicates document mode; Executed by the function of ShellExecute,some non- ║ ║ │ │ executable files (like *.TXT,.BMP etc.) can be opened; mode can be absent. ║ ║ │ │ Such operations as open,edit,explore,find,print,properties and runas are operable,as well ║ ║ │ │ as opening an EXE file.runas is used in installing programs demanding super privileges. ║ ║ │ │☼-user: -passwd: -passwd* indicating running a program with a specified account; ║ ║ │ │☼-err indicates capturing standard error output,-err+ capturing standard output and ║ ║ │ │ standard error output; ║ ║ │ │☼-mem indicates the ghost process executed in the memory; ║ ║ │ │☼-raw indicates the primitive binary data captured, EXEC* -raw ║ ║ │ │☼-nowin:no window(CREATE_NO_WINDOW) ☼-nfb:to disable the cursor of waiting. ║ ║ │ │☼"$" indicates the document mode; ║ ║ │ │☼-io:to take over the input and output of the subprocess. ║ ║ │ │☼"@" indicates executing on the background desktop(WinLogon),totally hidden,and thus unable ║ ║ │ │ to interact with users,only applicable to registeration,like: ║ ║EXEC│ │ "EXEC @PECMD.EXE CALL $SHELL32.DLL,DllInstall,#1,U"; ║ ║ │ │☼-hook:to modify the shutdown code in a process(hook the function "ExitWindowsEx").It is ║ ║ │ │ advised to execute "EXEC --hook =EXPLORER.EXE," to modify the shell function of shutdown ║ ║ │ │ ,thus when executing "Startup->Shutting down system","PECMD.EXE SHUT" will be executed to ║ ║ │ │ shut down the computer; ║ ║ │ │☼-runs indicates programs automatically running by getting them registered in the key of ║ ║ │ │ RUNS(suggested).They are run by Shell after logining.If "=" is used,they will be ║ ║ │ │ registered in "HKLM\Software\Microsoft\Windows\CurrentVersion\Run",otherwise,in ║ ║ │ │ "HKCR\Software\Microsoft\Windows\CurrentVersion\Run"; ║ ║ │ │☼The suffix | behind EXEC refers to the pipe mode,supportive of binary command pipe at this ║ ║ │ │ time,as well as such redirection symbols as >,>>,<,2> and >&. ║ ║ │ │☼EXEC*[1|N|-] NAME= indicates storing the standard output of the program in the specified ║ ║ │ │ variable NAME and forced to be in the waiting mode.1 indicates intercepting only the first ║ ║ │ │ line; N indicates elimenating the newline to emerge into one.- indicates elimenating the ║ ║ │ │ last newline,otherwise the output remains unchanged.If the data is of large amount,it ║ ║ │ │ should be stored in a PE variable(like &ABC).NAME can be @CtrlName,thus it is displayed on ║ ║ │ │ the control realtime.NAME+= refers to the appending mode. ║ ║ │ │ So it is with -catch:to store the standard output of the program in the specified variable ║ ║ │ │ NAME. ║ ║ │ │ ▲Notice:EXEC*1 ... to terminate the command being executed after receiving a line of ║ ║ │ │ message. ║ ║ │ │☼-clone:VarName:to clone a PECMD to run the script referenced by VarName. ║ ║ │ │ --exe:capabile of specifying another PECMD.EXE,coordinating with --logs:[?][*]LOGSFile; ║ ║ │ │ with ? indicates only currently-opened LOGS are valid. ║ ║ │ │☼-no64:For pecmd32,this will not lift the restrictions to the X64 file system. ║ ║ │ │☼-shel:"AutoCMD" Executed as SHEL -incmd:clone for inner cmd ║ ║ │ │☼-timeout:[#*]MiniSeconds[:ErrCode] wait process timeout, not kill if #.*include child ║ ║ │ │☼-su[a|e|c|d]:System privilege a:active e:environment c:skip uac. d:CWD -uac: =-suc ║ ║ │ │☼-svrsys[?]:Service switch desktop -svrusr[?]:Switch by user ID ?:Only in service script ║ ║ │ │ -svr-:disable switch ║ ║ │ │☼/InstallService:to install service with the name of "name"; /RemoveService:to remove ║ ║ │ │ service,only applicable to command line.In script,use EXEC =%MyName% /InstallService ...; ║ ║ │ │ --killwin:aiming at MESS-svr windows; --killwin2:aiming at MESS-svr2 windows; ║ ║ │ │ --wait:to wait for the end of the process(default),--nowait:not to wait; ║ ║ │ │ --idle ms:to execute the command after being idle for ms; ║ ║ │ │ --nojob:not to kill the subprocess; --gui-: not INTERACTIVE --desk[-]:[not] switch display ║ ║ │ │ --idlewait:not to terminate the running program if there is input,otherwise terminate if ║ ║ │ │ there is input; --usr:switch user ID ║ ║ │ │ Executive body HERE_IS_SERVICE0:Service params can be embeded behind,100 characters. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼To execute the embeded program,use --exe:[*[*]][?.TempFileExt:][cab:]Transfer[:CABSubFile] ║ ║ │ │ or transfer via the first word of a command.Without * indicates being directly executed in ║ ║ │ │ memory; With * indicates being executed in a temporary file to be automatically deleted. ║ ║ │ │ The figure refers to the ID number of resource in EXEDATA,compressible in CMPS. ║ ║ │ │ If there are many programs,the latter(executed in a temporary file) should be adopted. ║ ║ │ │ &PEVarName,ud:UDFileName:UDInternalFileName,ex:self-extracted packet,** indicates deleting ║ ║ │ │ more safely.?\ inidcates replacing a directory,and ?? replacing a FileName. ║ ║ │ │ Resources can be witten as:"[FileName]""#RsrName[|DirName]",and the latter pair of "" can ║ ║ │ │ be absent.The RsrName can be non-figure characters at this time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│EXEC =!CMD.EXE /C "DEL /Q /F %TEMP%" ║ ║ │ │EXEC*1 &&LABEL=!CMD.EXE /C dir C:\...... ║ ║ │ │EXEC*N &&VER=!CMD.EXE /C VER ║ ║ │ │EXEC* &&DIRT=!CMD.EXE /C DIR /S T:\xxxxx 2>&1 ║ ║ │ │EXEC* @Edit1=!ping 127.0.0.1 ║ ║ │ │EXEC| =!ipconfig > ip.txt ║ ║ │ │EXEC| =*ipconfig | =%Myname% TEAM READ --,**,V|| MESS. [%%V%%] //ENVI^ EnviMode=1 first ║ ║ │ │EXEC| !cmd /c dir | !=gzip.exe -9 > dirs.gz ║ ║ │ │EXEC|* &&V=!gzip.exe -d < dirs.gz ║ ║ │ │PECMD.EXE EXEC /InstallService IdlePoweroff --nowait --delayservice 20000 --hide ║ ║ │ │ --idle 1200000 shutdown -f -s -t 30 ║ ║ │ │EXEC* --exe:#100 &&V=cmd /c dir //to call the embeded cmd.exe,directly executed in memory. ║ ║ │ │EXEC --clone:&MyStript Params A B C ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │SHELL is also loaded by this command; ║ ║ │ │In the waiting mode,%&&ERRORLEVEL% is the exit code of a program; %ERROR% %&&ERROR% share ║ ║ │ │the same value. ║ ║ │ │In the waiting mode,programs can be directly executed as a batch without EXEC,like NOTEPAD; ║ ║ │ │If there are no command word LOAD/EXEC but exist files with such extensions as WC?,IN? or ║ ║ │ │TX?,they will be executed by LOAD,otherwise by EXEC; ║ ║ │ │When a switch conflicts with a leading character,the last is valid.Between the leading ║ ║ │ │character and file name,a space can be added to break; ║ ║ │ │In the document mode,if params are demanded,the file names should be bracketed with ",or all ║ ║ │ │of them will be treated as a single file name. ║ ║ │ │If there are spaces in the program path and the file path in the parameter, use "". ║ ║ │ │In the command line or batch script,! * --hide is generally ok without @,for @ is not ║ ║ │ │supported by all versions of Windows. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │Detailed explanations to example 2 "EXEC* DIRT=!CMD.EXE /C DIR /S T:\xxxxx 2>&1": ║ ║ │ │1:"2>&1" are the special symbols for CMD.EXE,indicating merging the standard output of error ║ ║ │ │(2) into the standard output(1). EXEC accepts the standard output by default,thus it accepts ║ ║ │ │all the content. ║ ║ │ │Command:C:\>dir XYAXXX ║ ║ │ │The volume in drive C is WINDOWSXP ║ ║ │ │with its serial number 28F0-182C ║ ║ │ │Files are not found in the directoy of C:\ ║ ║ │ │//Here "Files are not found" is a standard output of error(without 2>&1,there will be no ║ ║ │ │such a line),while others are standard output. ║ ║ │ │EXEC* --err indicates accepting a standard output of error. ║ ║ │ │2:1 indicates only intercepting the first line. ║ ║ │ │This is because some commands output too much,yet only the first line is needed.This helps ║ ║ │ │to terminate the program and return the outcome at once. ║ ║ │ │3:to accept other lines of output.Firstly transfer all to the variable &V,and then intercept ║ ║ │ │the specified line from it. ║ ║ │ │1> FORX *NL &V,&line, .... ║ ║ │ │FORX automatically splits the output into lines and circulates every round.&line refers to ║ ║ │ │a line. //[HELP FORX] ║ ║ │ │2> use READ //[HELP READ] ║ ║ │ │READ -,-1,&LINES,%&V% //to read the number of lines. ║ ║ │ │READ -,0,&line,%&V% //to read the last line. ║ ║ │ │READ -,1,&line,%&V% //to read the first line. ║ ║ │ │READ -,2,&line,%&V% //to read the second line. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'EXIT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│EXIT [ScriptType] ║ ║ │ │EXIT= [ErrCode or PE_VarName or error] //to set ErrCode,0 by default,PE_VarName is its ║ ║ │ │address,error:to return the error code. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To exit the subprocess called by the current command of CALL,the process of config file ║ ║ │ │called by LOAD or the loop command called by LOOP. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║EXIT│PARA│■ScriptType:indicated as [Num or CMD].If absent,it is automatically judged(_SUB,FILE,FORX, ║ ║ │ │ LOOP,BLOCK). ║ ║ │ │♦CMD:not case sensitive.FILE,WIN,_SUB,FORX or BREAK,LOOP or BREAK,- or BLOCK and CONTINUE ║ ║ │ │ respectively refer to the current file,current window,current function,current FORX, ║ ║ │ │ current LOOP,jumping to the end of current block(before }) and jumping to the next round ║ ║ │ │ of LOOP/FORX. EXIT ToWin indicates terminating the execution of the function and return to ║ ║ │ │ the control of window.[suggested] ║ ║ │ │♦Num:taken from "1~4",referring to the current process,current file,current FORX,and ║ ║ │ │ current LOOP.[not suggested] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│IFEX $%Val%=10,EXIT Loop or FIND $%Cancel%=YES,EXIT File!EXIT _Sub or EXIT 1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Example 1 shows that when Val is 10,the program exits the current loop; The error code is ║ ║ │ │ thread-independant. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FBWF' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FBWF [P Percent of free memory] [L Min] [H Max] [F SurplusVal] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set FBWF cache. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║FBWF│PARA│■The units for Max,Min and surplus value are all MB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FBWF P20 L32 H64 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The three params can be used separately.If FBWF L64 is used,64M of FBWF will be set by force ║ ║ │ │ignorant of the size of the free memory. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FDIR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FDIR [--short[+]|--long[+]] [--full|--fullfile] [--volume] VarName=FileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the name of the directory containing the specified "FileName"(without "\" at end). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the directory name; --full refers to an absolute directory,ending with \ ║ ║ │ │ indicates itself,--fullfile indicates full path of the file. ║ ║FDIR│ │■FileName:a valid file name,-short/-long:to export a short/long file name(+if have). ║ ║ │ │ --volume:to export a file name with volume. --1 add double quotes on spcae ║ ║ │ │ --part:to export \\?\\Harddisk#Partition# --volumepart:--volume then --part ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FDIR fPath=C:\Windows\System32\calc.exe or FDIR aPath=%CurDir%\Path1\Path2\FileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If FileName is a relative path,the returned outcome is the working directory of PECMD.EXE ║ ║ │ │ or config file; ║ ║ │ │☼The outcome of example 1 is "C:\Windows\System32" and example 2 is"%CurDir%\Path1\Path2". ║ ║ │ │☼Supportive: \\?\GLOBALROOT\Device\Harddisk0\Partition1\A.TXT (Others are the same) ║ ║ │ │ \\?\Harddisk0Partition1\A.TXT \\?\HarddiskVolume1\A.TXT \\?\ImDisk0\A.TXT ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FDRV' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FDRV <=>[FileDirName] ║ ║ │ │FDRV = //return all drive letters of the system in the form of C:|D:|E:|F:|... ║ ║ │ │FDRV =*: //return all drive letters of the system in the form of C: D: E: F: ... ║ ║ │ │FDRV =* //return all drive letters of the system in the form of C D E F ... ║ ║ │ │FDRV =? //return all MS-DOS device names of the system ║ ║ │ │FDRV -link? Ret,AllName,LastName=SymName //returns the linked object. ║ ║ │ │FDRV -vol [VolName][,FSName][,IDName][,MaxLenVarName][,MarkVarName][,UUIDName]=DrvName // ║ ║ │ │ return the volume,etc. ║ ║ │ │//-ab:not to search for AB floppy; -rsort:in reverse; -idle:idle ║ ║ │ │drive letters; -idlec:to exclude AB. ║ ║ │ │FDRV -setvol DrvName=Vol //set the volume. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the drive letter for the partition containing the specified "FileDirName" ║ ║ │ │(end with ":",without "\" at the end),or all drive letters of the system. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the drive letter for a partition; ║ ║FDRV│ │■FileDirName:valid file or directory name(can be absent.Refer to the explanation in REM for ║ ║ │ │ other implication of being absent. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FDRV fDrive=C:\a or FDRV Drvs= or FDRV *vol V=\\?\Harddisk0Partition2 or \\?\HarddiskVolume5 ║ ║ │ │or\\?\ImDisk0\ or\\?\Volume{cc0ac7c9-27c4-11e5-ba3b-806e6f6e6963}\ or\\?\STORAGE#Volume#{cc0 ║ ║ │ │ac7c0-27c4-11e5-ba3b-806e6f6e6963}#0000008481CD9800#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\ ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If FileName is a relative path,the returned outcome is the working directory of PECMD.EXE ║ ║ │ │ or config file; ║ ║ │ │☼If "FileDirName" is absent,all drive letters of the system will be returned in the form of ║ ║ │ │ C:|D:|E:|F:|...; ║ ║ │ │☼The outcome of example 1 is "C:" and example 2 is a list of all drive letters of the ║ ║ │ │ system(The list is not settled but changeable all the time). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FEXT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FEXT <=> ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the extension of the specified file(without "."). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the extension; ║ ║FEXT│ │■FileName:a valid file name. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FEXT fExt=C:\Windows\System32\calc.exe or FEXT aExt=X:\Path1\Path2\FileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The outcome of example 1 is "exe",and example 2 is null; ║ ║ │ │☼The returned value of FDIR,FDRV and FEXT can be checked or compared by the command of FIND ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FILE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FILE [-simpleprogress|-progress -force[q] -file -m -q] [-] FilePath[DestPath] ║ ║ │ │FILE FilePath>>NewName without parent directory //to imitate the command of Ren in CMD,not ║ ║ │ │change the directory containing the file but change its name. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To delete,copy,move or rename a file or directory.-m:multiple files,spaced by "; ",-:to end. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │■-simpleprogress:to display progress bar,-progress:to display progress bar and file name, ║ ║ │ │ --file:to only operate a file,-force[q]:to delete by force(as possible)[itself first], ║ ║ │ │ -q:no warning(like IE temporary directory),-delme:to delete file or directory locked by ║ ║ │ │ itself. -rd:rmdir -su:super-right -delay:delay ║ ║ │PARA│■FilePath:the name of the source file and directory.DOS wildcard "?" or "*" is applicable ║ ║ │ │ to deleting,copying and moving the file and directory; ║ ║ │ │■Operator: "->","=>",">>" refer to moving,copying,renaming the file and directory. ║ ║ │ │ Operators being absent indicates the operation of deleting. When renaming with ">>",be ║ ║ │ │ sure there are no DOS wildcards in FilePath and NewName.Moreover,there should be only one ║ ║FILE│ │ FilePath and NewName and NewName is sure not to have existed with its directory unchanged. ║ ║ │ │ Actually,"->" is also capable of doing this and seems more powerful than this. ║ ║ │ │■DestPath:the destination path to move or copy the source file and directory to.It should ║ ║ │ │ be a definitive name of file and directory without any DOS wildcard. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FILE %SystemRoot%\INF\*.INF=>%TEMP% or FILE pphk->pphk22 or FILE -delme %CurDir% ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If the system is started with RAMDISK,some useless files (like NTOSKRNL.EXE of 2M)can be ║ ║ │ │ deleted after booting to add to the writeable space for RAMDISK; ║ ║ │ │☼When moving and copying,if only a directory is specified,the specified directory will be ║ ║ │ │ copied or moved to the destination only,as is shown in example 2; When operating a file,no ║ ║ │ │ operation will be performed if no specified directory exists in the specified destination, ║ ║ │ │ as is shown in example 3. ║ ║ │ │☼The operation will be terminated if the specified destination directory or file does not ║ ║ │ │ exist,like "pphk" and "top.bmp" in example 2 and 3,if not exist; ║ ║ │ │☼To move a folder to a new one,please refer to the example: FILE pphk=>pphk22 ║ ║ │ │☼Except renaming,the source and the destination can be multiple,separated by "; ". ║ ║ │ │ If there are multiple destinations,the number of sources should be the same as that of ║ ║ │ │ destinations,ie,they should be operated correspondantly; The destination should be the ║ ║ │ │ name of itself instead of the directory containing it. ║ ║ │ │ eg:FILE --m x.log;x3.log=>FOLDER\x11.log;HELP\x33.log ║ ║ │ │☼-file Supportive: \\?\Harddisk0Partition2\A.B \\?\HarddiskVolume5\A.B \\?\ImDisk0\A.B ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FIND' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FIND[|^#~+-][*c] [! ],[COND1][! CMD2] //Take notice of the space behind !, ^#~+- are ║ ║ │ │ the alternative delimiters of !. ║ ║ │ │FIND{|^#~+-}{*c} {! }{$}[{! } relational calculus {! } ..],{CMD1}{! CMD2} ║ ║ │ │ //combined conditions ║ ║ │ │FIND QureyCOND=?,VarName //to query ║ ║ │ │FIND --pid*@.[#ParProcID|ProcID] VarName,PrgmName //to query,* means matching the front ║ ║ │ │ part only,"." means matching the extension. ║ ║ │ │FIND [--sub][--forpid:PID|--fortid:TID] --wid*@[ParWinID] VarName,WinTitle//to query,* means ║ ║ │ │ matching the front part only. ║ ║ │ │FIND [--sub][--forpid:PID|--fortid:TID] --wid#ParWinID VarName,CtrlID //to query WinID of ║ ║ │ │ the control. ║ ║ │ │FIND --menu VarName,WinID //to query MenuID of the window. ║ ║ │ │FIND --menu#0 VarName,MenuID //to query SubMenuID of the Menu. ║ ║ │ │FIND --menu#SN VarName,MenuID //to query information of SubMenu with the ║ ║ │ │ specified SN,SN>=1. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│If the conditional expression holds,command group1 will be executed; If not,command group2. ║ ║ │ │--sub:to recurse.^#~+- are delimiters. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │▲!Notice:"!" before indicates conditional reverse.$ before [ indicates all behind ║ ║ │ │ being $ comparison and it can be absent; Relational operators are &|@(xor). ║ ║ │PARA│■COND:judgement to [MemSum],[AllDiskSpace],[MemProc] or [Key]. ║ ║ │ │☼MemSum MEMNum.The unit is M,ceiling(in one method). ║ ║ │ │☼MemSum MEMBNum.The unit is Byte. ║ ║ │ │☼AllDiskSpace R:\[*]Num,R:drive letter. (MB) *:Bytes ║ ║ │ │☼Key KEY[#]Num. ║ ║FIND│ │☼Proc the name of a memory process(including *?). ║ ║ │ │☼string comparison:*Left_PEVAR_NameRight_PEVAR_Name ║ ║ │ │☼string comparison:$LeftPartRightPart,not case sensitive.The LeftPart ║ ║ │ │ and RightPart support variables.If an operator is contained in the LeftPart or RightPart, ║ ║ │ │ it is required to be transfered to a variable. ║ ║ │ │ For the convenience of being directly compared with an operator itself,the first character ║ ║ │ │ after $ will not be treated as an operator but the LeftPart of the comparison. ║ ║ │ │☼number comparison: |LeftPartRightPart,the numbers can be signed floats ║ ║ │ │ # indicates integer comparison. ║ ║ │ │☼operator:comparison operator "=","<>","<",">",">=" and "<=" respectively indicate being ║ ║ │ │ equal to,unequalto,less than,greater than,greater than or equal to,less than or equal to. ║ ║ │ │ The suffix *c indicates case sensitive. ║ ║ │ │☼number:numbers to compare,the unit for disk is MB and the numberic value of the key is the ║ ║ │ │ code of it.GMKS can be present. ║ ║ │ │☼command group: a command or commands to execute.Commands are separated by "|" and groups ║ ║ │ │ are separated by "!". ║ ║ │ │☼FIND| Group mode,it indicates checking the character "|" in the params behind.Not to ║ ║ │ │ check by default to avoid error. ║ ║ │ │☼query conditions: MEM=? MEMB=? R:\=? KEY=?Num ║ ║ │ │☼--wid @ indicates all,one line for each. SN WinID CtrlID ParWinID ThreadID ProcID Type ║ ║ │ │ Title,separated by TAB. ║ ║ │ │☼--menu#SN: SN MenuID CtrlID TXT,separated by TAB.To return all if SN is null,in multiline. ║ ║ │ │☼--pid @ indicates a list,one line for each.ProcID ParProcID MemK CPUTime(100ns) TotalTime ║ ║ │ │ FileName CMDLine.CPUTime of process 0 refers to IdleTime of the system.Separated by TAB. ║ ║ │ │☼FIND --pid VarName //to return: IdleTime TotalTime CPUNum ClkNum_For_OneSec ║ ║ │ │ 100nsNum_For_OneClk ║ ║ │ │--[in]visible :Windows is [in]visible. --class:WinClassName ║ ║ │ │*var Use PEVAR_Name in COND ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FIND MEM<128,SHEL %SystemRoot%\SYSTEM32\XPLORER2.EXE!SHELL %SystemRoot%\EXPLORER.EXE ║ ║ │ │FIND $%m%=1,!! find $%n%=1, mess aaa!mess bbb //example of nesting. ║ ║ │ │FIND COND1,!! FIND COND2,! FIND COND3,DoSth1! DoSth2 //nesting sentence pattern,can be ║ ║ │ │combined with IFEX. ║ ║ │ │FIND [ C:\ > 100 & $"A " <> "A" & explorer.exe ],DoSth1! DoSth2 //example of combination. ║ ║ │ │FIND --pid*.123 V,or FIND --pid*@.123 V, //to check PID 123. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is powerful but complicated and can be used in nesting(FIND or IFEX) to judge ║ ║ │ │ mutiple conditions. ║ ║ │ │☼If this command nests FIND or IFEX,"!" should be used to separate the command groups in ║ ║ │ │ the nested command so as to avoid confusion. ║ ║ │ │ "," being closely followed by !! indicates there being no ELSE part for the convenience of ║ ║ │ │ nesting combination. ║ ║ │ │☼The command IFEX is similiar to FIND in function. ║ ║ │ │☼The key value can be A~Z,0~9,code 0xNN or numeric code with at least 2 digits.# can be ║ ║ │ │ absent.It is just for compatibility.With # indicates it should be in the code mode. ║ ║ │ │ VK_ sequence is applicable to the key,whose outcome is stored in the environment variable ║ ║ │ │ %PressKey%. ║ ║ │ │ The key makes sense only with =,which checks the specified key(not to check other keys, ║ ║ │ │ refer to WAIT). ║ ║ │ │ To compare with the separate = itself,= can be placed behind $.In some complex situations, ║ ║ │ │ variables should be employed to store some special characters for their referencing. ║ ║ │ │☼--forpid:PID --fortid:to specify PID or ThreadID respectively that the command belongs to ║ ║ │ │☼combined conditions:[] are the marks,can be nested,but () are suggested.$ before [ ║ ║ │ │ indicates all behind being $ comparison.Relational operators are |&@,separated by space. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\ \\?\HarddiskVolume5\ \\?\ImDisk0\ ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FLNK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FLNK ,[,LinkTypeMark] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To establish a hard link or symbolic link of NTFS file system. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■DestPathName:the name of file and directory to establish a hard link or symbolic link; ║ ║ │ │■SrcFileName:the path name of an existing file; ║ ║FLNK│ │■LinkTypeMark:Num,if absent,0 by default indicating establishing a hard link,while non-zero ║ ║ │ │ symbolic link. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FLNK %WinDir%\System32\abcd.DLL,%CurDir%\abcd.DLL or FLNK %WinDir%\MyTool,%CurDir%\MyTool,1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼XP and 2003 OS do not support symbolic link or directory link,as well as trans-volume hard ║ ║ │ │ link; ║ ║ │ │☼This command supports environment variable interpretation(example),as well as using ║ ║ │ │ wildcards; ║ ║ │ │☼This command works by calling CreateHardLinkW of Kernel32.DLL or CreateSymbolicLinkW. ║ ║ │ │ Whether it succeeds or not has nothing to do with the system. ║ ║ │ │☼-j or Type 2 indicates directory link.If SrcFilePathName is null,the link will be deleted. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FONT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FONT [-] [,StartPart] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To (un)register fonts or add on fonts ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║FONT│PARA│■FontFilePath and StartPart ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FONT %CurDrv%\OutPart\FONT or FONT \WINDOWS or FONT \WINDOWS,C: ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If the first character of the command is "\",it will search all the partitions starting ║ ║ │ │ from the specified starting partition for the fonts in Windows\Fonts,install and get them ║ ║ │ │ registered.Defining a starting partion helps to avoid searching the floppy in the computer ║ ║ │ │ If the starting partition is absent,the command will search all the partitions (including ║ ║ │ │ the floppy). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FORM' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FORM [-raw] [-x] <[VarName][,BUSNAME]>=<*|[\\.\]VolName|DeviceName> ║ ║ │ │FORM <-free|-userfree|-userall> [VarName= ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the media type of a specified drive.☼-raw:not to distinguish USB(to avoid floppy) ║ ║ │ │-x:floppy can be distinguished in details(2=1.44M). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the media type of a partition with a specified drive letter.BUSNAME ║ ║ │ │ stores the bus type to make up for the insufficient information of the media type. ║ ║ │ │■VolName:a valid drive letter or name of file and directory existing in the system. ║ ║ │ │ * indicates returning the list of drive letters. ║ ║ │ │■DeviceName: \\.\PhysicalDrive0,etc:to return the media type and bus type. ║ ║ │ │■-free:all free space(byte),-userfree:free space available for current user,-userall:all ║ ║ │ │ space for the current user. ║ ║FORM├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│FORM DriveType=F: or FORM DriveType=C:\Windows or FORM DriveType=%CurDir% ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼VolName can reference environment variables,like example 3; ║ ║ │ │☼The returned value of the command can be the following strings:DRIVE_UNKNOWN, ║ ║ │ │ DRIVE_NO_ROOT_DIR,DRIVE_REMOVABLE,DRIVE_FIXED,FUNCTION_ERROR,DRIVE_REMOTE,DRIVE_CDROM, ║ ║ │ │ DRIVE_CDROMUSB,DRIVE_RAMDISK,DRIVE_USBFLASH,DRIVE_USBDISK or numbers(others). ║ ║ │ │☼This command,coordinating with FDRV,is capable of listing the media types of all drives in ║ ║ │ │ the system. Refer to FDRV. ║ ║ │ │ bus type BusTypeUnknown=0,BusTypeScsi=1,BusTypeAtapi,BusTypeAta,BusType1394,BusTypeSsa, ║ ║ │ │ BusTypeFibre,BusTypeUsb,BusTypeRAID,BusTypeiScsi,BusTypeSas,BusTypeSata,BusTypeSd, ║ ║ │ │ BusTypeMmc,BusTypeVirtual,BusTypeFileBackedVirtual,BusTypeSpaces,BusTypeNvme,BusTypeSCM, ║ ║ │ │ BusTypeUfs,BusTypeMax,BusTypeMaxReserved=0x7F ,<0 error ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'FORX' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│FORX [*ab] [*cur] [/S[:SubDirLvlNum]] [/O:N] [/O:-N] [/size:Min:Max:Align] [@|$][[!]\]File,Va║ ║ │ │ r,[MaxTimes],CMD_and_Param ║ ║ │ │FORX *[v] VarList[Name],, [ParamList] ║ ║ │ │FORX *NL[:Separator] PE_VarName with lines of its content,, [ParamList] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To operate the matched file and directory with corresponding command.Its function is similar ║ ║ │ │to the command of FOR in CMD.EXE. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ *ab:to exclude AB removable disks; /S:to search the subdirectory; /O:N to sort by name; ║ ║ │ │ /O:-N to sort in the inverted sequence.*cur:to give priority to the current drive letter. ║ ║ │ │ *qu[~] surport " *off to return var_part *bf Breadth first ║ ║ │ │■File:to specify the file and directory,wildcards applicable. ║ ║ │ │■Var:to specify the name of a variable to refer to the file found.The name of the variable ║ ║ │ │ cannot be duplicated and the variable can be referenced in many places in the param list. ║ ║ │ │■MaxTimes:to operate the matched file and directory for the maximum number of times. ║ ║ │ │ <=0 indicates operating all the existing files. ║ ║ │ │■CMD:a valid command of WinCMD.EXE.The format and number of its params are determined by ║ ║ │ │ the command itself. ║ ║ │ │■PE_VarName with lines of its content:to store lines of content in the variable.Notice ║ ║ │ │ that there is no % if it is only a variable name.One line of its content is returned each ║ ║ │ │ time and it should be PE variable name only. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║FORX│EXMP│♦FORX %CurDir%\Path1\*.DLL,AnyDLL,0,CALL $%AnyDLL% ║ ║ │ │♦FORX \auto*.INF,AutoRunVirus,0,FILE %AutoRunVirus% ║ ║ │ │♦FORX !\Tools\Tools.INI,MyIni,1,LOAD %MyIni% ║ ║ │ │♦FORX /S /O:-N C:\windows\*.INI,f,0,MESS %f% @#OK ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command can find the file and directory with attributes,like the ones with hidden ║ ║ │ │ attributes. ║ ║ │ │☼"\" indicates searching all partitions."!" indicates searching all partitions in the ║ ║ │ │ inverted sequence. ║ ║ │ │☼"@" indicates searching only the directory."$" indicates searching file and directory,and ║ ║ │ │ file only if absent. ║ ║ │ │☼"*" indicates being in the mode of variable list,separated by null characters. ║ ║ │ │☼Example 1 indicates registering all the DLLs in %CurDir%\Path1\. ║ ║ │ │☼Example 2 indicates deleting all the auto*.INF in the root directory of all partitions. ║ ║ │ │☼Example 3 indicates searching all partitions in the inverted sequence for Tools.INI in the ║ ║ │ │ directory of Tools and loading the first sought Tool.INF with the command of LOAD. ║ ║ │ │☼If CMD and param are absent,the variable will return the number of files and directories ║ ║ │ │ found or the maximum number of times the command is executed.If CMD is *,return list. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\*.* \\?\HarddiskVolume5\*.* \\?\ImDisk0\*.* ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'GETF' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│GETF[#] [-err:errcode] [-g=ColNum[@SpacedStr]] FileName,PosLen,VarName ║ ║ │ │GETF -find LargeFileName,[LargePos[#LargeLen[#SubLen[#SubOffset[#BlkSZ[#OffsetInBlk]]]]]], ║ ║ │ │ [*[]]VarName,DestFile|*DestVarName //to search in binary *:list ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To read the data of a specified file in BINARY and assign it to a specified variable. ║ ║ │ │The suffix # indicates reading the binary PE object. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■-g=ColNum:to automatically insert a line break in the position after a certain number of ║ ║ │ │ columns. -fd=: accelerate -free=HANDLE:free ║ ║ │ │■FileName:a valid name of file,supporting interpreting environment variables; It can be a ║ ║ │ │ physical drive like \\.\PhysicalDrive0,a logical drive like C: and a partition device like ║ ║ │ │ \Device\Harddisk0\Partition1; It can also be #[.]InternalSrcID[|Dir],.indicates raw data. ║ ║ │ │ The directory for special source can be indicated as #Num. -bin or begin with &:PEVAR ║ ║ │ │■PosLen:number,consisting of the starting position and the length (byte) to read,separated ║ ║ │ │ by "#",like 1023#32; The suffix TGMKS can be present.K=1024,S=512.Length being * indicates ║ ║ │ │ reading to the end of the file. ║ ║ │ │■VarName:string,to store the outcome of reading. ║ ║ │ │■-find:indicates the starting position of a binary search target in a large file.LargePos ║ ║ │ │ refers to the start,LargeLen indicates the limit and SubLen indicates the target length ║ ║ │ │ limit.If LargePos,LargeLen,SubLen and SubOffset are absent or <=0,they will be ignored; ║ ║ │ │ BlkSZ is 512 by default.LargePos%BlkSZ can be used as the OffsetInBlk. ║ ║GETF├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│GETF %CurDir%\Memu.LST,0x400#0x10,FileData or GETF %CurDir%\Memu.LST,-1,FileLength ║ ║ │ │GETF -bin &Src,2#4%,Dst or GETF# %CurDir%\Memu.LST,0x400#0x10,&DataBin ║ ║ │ │TEAM ENVI$# &DATA=33 33 | GETF -find A.ISO,0#1M#2##512,&POS,*&DATA //512Bytes-group find ║ ║ │ │TEAM ENVI$# &DATA=33 33 | GETF -find A.ISO,0#1M#2##1,&POS,*&DATA //1Byte-group find ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The starting position that GETF reads is relative to the starting address of the file.To ║ ║ │ │ read the first byte of the file,the starting position shoulb be 0x00; ║ ║ │ │☼The outcome of the command is indicated with hex numbers,separated by space between them. ║ ║ │ │ If the starting position or length is absent,both will be set as 1 by default; ║ ║ │ │☼The corresponding command to modify files in BINARY is PUTF.It is not suggested treating ║ ║ │ │ super large files with the commands of GETF and PUTF; ║ ║ │ │☼If the starting position is <0 or exceeds the length of the file,the outcome of the ║ ║ │ │ command will be the length of the file indicated in decimal and the error outcome will be ║ ║ │ │ 0xFFFFFFFF by default; ║ ║ │ │☼Besides,the commands to read or modify files in string are the commands of READ and WRIT. ║ ║ │ │ For large mounts of data(7K),PE variables should be employed; ║ ║ │ │☼Data format:Numbers are spaced,like 0x23 0xAD 0x1C 0x80. ║ ║ │ │☼-find:BlkSZ refers to the aligned size,512 by default.If it is set as 1,the command will ║ ║ │ │ search all the content in the way of byte alignment. Times<0 is reverse. ║ ║ │ │☼The resource can be written as "[FileName]""#SrcName[|DirName]",and the pair of "" behind ║ ║ │ │ can be absent.The SrcName can be non-figure characters at this time. ║ ║ │ │☼To support UD files: ud:UD FileName:UD InternalFileName ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'GROU' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │RORM│GROU [-right] [-center] [*] ,,Title,[Status][,FrontColor#BackColor][,Font] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a combined panel in the window defined by _SUB and illustrate the functions of ║ ║ │ │the controls in it. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled when quitting the block or ║ ║ │ │ function. ║ ║ │ │■ComPanelName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment varialbes. ║ ║ │ │■ComPanelShape:the position and size of the combined panel.The format is .L,T,W and H are respectively followed by corresponding numbers. ║ ║GROU│ │■ComPanelTitle:string,to describe the functions of the combined panel. ║ ║ │ │■ComPanelStatus: ±16:invisible Font:see EDIT ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│GROU Group1,L8T4W336H400,to register WimShExt.DLL ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼This command is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │REM │☼To set the title of the combined panel,use "ENVI @ComPanelName=ComPanelTitle".Refer to ║ ║ │ │ ENVI. ║ ║ │ │☼Use "ENVI @ComPanelName.Visible=Num" to set its visibility.0:invisible,not 0:visible ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HASH' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HASH [FileName|$StrContent|*PEVarName],[VarName],[ChkType] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To calculate CRC32,MD5,SHA1 or SHA256 check codes of a file or string. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■FileName:the full name of the file whose Hash check code to be calculated,containing its ║ ║ │ │ path,supporting interpreting environment variables; ║ ║ │ │■StrContent:string,Chinese characters can be contained,case sensitive.Either "FileName" or ║ ║ │ │ "StrContent" is present; ║ ║ │ │■The leading character $:a symbol for string; If FileName/StrContent contains ",",the two ║ ║ │ │ "," behind cannot be absent.The string is in ASCII code. ║ ║HASH│ │■PEVarName:to directly calculate its hash without creating a temporary file.If PEVarName ║ ║ │ │ contains &,* can be absent. ║ ║ │ │■VarName:to store the outcome of calculation in string. ║ ║ │ │■ChkType:string,"CRC32","MD5","SHA1","SHA256" or "MD5" by default. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HASH %SystemRoot%\System32\UserInit.EXE,md5UserInit or HASH $mdyblog.blog.163.com,hPSW,SHA1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼When using HASH to calculate the HASH check code of a string,its size is unlimited. ║ ║ │ │☼When an error arises in reading a file,its MD5,SHA1 and CRC32 are all null; The CRC32 of a ║ ║ │ │ null string is "00000000",MD5 is "d41d8cd98f00b204e9800998ecf8427e",and SHA1 is ║ ║ │ │ "da39a3ee5e6b4b0d3255bfef95601890afd80709". ║ ║ │ │☼VarName given,the outcome of the calculation with HASH will be stored in a specified ║ ║ │ │ variable.In example 2,VarName can be referenced by the environment variable %PSWh%. ║ ║ │ │☼If VarName is absent,the outcome of the calculation with HASH will be displayed in a ║ ║ │ │ message window and stored in the clipboard. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HELP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HELP [-hlpdoc=HelpPage] [*[CMDLineH]] [[~]DirBkMark] [TxtForeColor][#TxtBkColor] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To display the information of help.With *,CMDLineH is <=-100000 or null,and no command line. ║ ║ │ │If CMDLineH is >=100000,there will be no help window. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║HELP│PARA│■DirBkMark:the directory entry to directly display(the first few characters); ~ indicates ║ ║ │ │ being forced to search for the text instead of bookmark.Being followed by . indicates that ║ ║ │ │ the current line is just displayed as the top line. * indicates a line break. ║ ║ │ │■Num:(Hex supported) ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HELP 0x00EEFF#0xFF0000 or HELP KeyVal or HELP ~example│EDIT. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Directly executing this command will also display the information of help without using ║ ║ │ │ command line params. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HIDE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HIDE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To hide the process of PECMD.EXE. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■No params. ║ ║HIDE├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HIDE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is designed to hide the process of PECMD.EXE in case it is mistakenly or ║ ║ │ │ artificially killed by other programs. ║ ║ │ │☼It is not applicable to the command line,but to config file only. ║ ║ │ │☼The command of SHEL should be used behind HOTK and HIDE. ║ ║ │ │☼Only after SHELL is loaded by the command of SHEL is HIDE able to hide the process of ║ ║ │ │ PECMD.EXE. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HIVE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HIVE [-u] [-super[_r]] [-quick] [*] ,[FileName] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To load or unload registry config file,euqual to the functions of LOAD and UNLOAD of REG.EXE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■-super_r:to set the authority of child keys by force. -quick:not add authority(default); ║ ║ │ │ -u:to load to HKEY_UESRS. ║ ║HIVE│ │■SubKeyName:the subkey name in HKEY_LOCAL_MACHINE when loading or unloading the specified ║ ║ │ │ registry config file.* indicates being exported to a file. ║ ║ │ │■FileName:the name of the registry config file to load.If absent,the command will unload ║ ║ │ │ the subkey with the specified SubKeyName. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HIVE PE,F:\BOOT\PE or HIVE PE or HIVE PE,%CurDrv%\BOOT\PE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼After HIVE loads the registry config unit,PECMD will set the account Everyone as ║ ║ │ │ acquiring permissions of full control so that users have the privilege to read and modify. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HKEY' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HKEY[$*] [ModKey+], ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set a hotkey of window or program level and associate a command with it. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│☼"$" indicates hotkeys of program level(default).A hotkey cannot be associated with the ║ ║ │ │ same command as the one of another hotkey.* is of window level and the hotkey can be ║ ║ │ │ reassociated in different windows with unlimited commands. ║ ║ │ │■ModKey+:4 modifier keys (Alt,Ctrl,Shift and Win)can be indicated as a string,connected ║ ║ │ │ with "+". ║ ║ │ │■KeyLetter:Simple keys("a"~"z" or "0"~"9") can be indicated directly."A"~"Z" is ║ ║ │ │ indicated together with SHIFT.It is allowed to directly use VK_Name(VK_can be absent) or ║ ║ │ │ the alternative string in the appendix,hex numbers supported. ║ ║ │ │■Keycode:consisting of "#" and the VKcode behind,see example 1 and example 2,hex number ║ ║ │ │ supported. ║ ║HKEY│ │■HKCMD:a valid command supported by PECMD. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HKEY #255,SHUT R or HKEY Ctrl+Alt+#0x41,DISP W800H600B16F75 or HKEY Ctrl+Alt+D,TEMP @Delete ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command can be located beyond _SUB and _END(with $) to achieve certain functions. ║ ║ │ │ Refer to _SUB and CALL. ║ ║ │ │☼Example 1 indicates calling SHUT to reboot after pressing the power button; ║ ║ │ │ Example 2 indicates calling DISP to set the display mode after pressing Ctrl+Alt+A; ║ ║ │ │☼Example 3 indicates calling TEMP to clear temporary directory after pressing Ctrl+Alt+D. ║ ║ │ │ Notice that the set hotkeys can not conflict with the ones of other programs. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HOME' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HOME [IEHomePage],[Num1],[Num2] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set and lock the IE homepage and disable the registry editor. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■IEHomePage:support all kinds of websites and local webpage files,like"http:\\www.mssb.com" ║ ║ │ │ If it is a local webpage file,a full name of the file is demanded(environment variable can ║ ║ │ │ be contained),like "%SystemRoot%\ReadME.htm". ║ ║HOME│ │■Num1:If not 0,the IE homepage will be locked,ie,no modification to it.If absent,it is 0 by ║ ║ │ │ default,ie,modification is permitted. ║ ║ │ │■Num2:If not 0,the registry editor will be disabled.If absent,it is 0 by default,ie,enabled ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│HOME http:\\www.sbms.com,1,1 or HOME %SystemRoot%\ReadME.htm ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command can be used in a script and command line; If teh IE homepage or registry ║ ║ │ │ editor is locked by some evil tools,it can be employed to unlock. ║ ║ │ │☼Example 1 indicates setting "http://www.sbms.com" as the homepage and disabling modifying ║ ║ │ │ it in the meanwhile,as well as forbidding the use of the registry editor. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'HOTK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│HOTK [--delall] [?[.]RetVarName] [ModKey+][,HKCmd] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set a hotkey of system level and associate a command with it.(.EXE or .CMD or .BAT), ║ ║ │ │supporting the internal commands of PECMD. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│☼ModKey+: 4 modifier keys (Alt,Ctrl,Shift and Win)can be indicated as a string,connected ║ ║ │ │ with "+". ║ ║ │ │■KeyLetter:Simple keys("a"~"z" or "0"~"9") can be indicated as letters directly,"A"~"Z" ║ ║ │ │ is indicated together with SHIFT,while other keys should be indicated with "#" followed by ║ ║ │ │ VKcode.It is allowed to directly use VK_Name(VK_can be absent) or the alternative string ║ ║ │ │ in the appendix,hex numbers supported. ║ ║ │ │■Keycode:consisting of "#" and the VKcode behind,see example 1 and example 2,hex number ║ ║ │ │ supported. ║ ║ │ │■HKCMD:a valid command supported by WinCMD. --del:to delete. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║HOTK│EXMP│HOTK #255,EXEC PECMD.EXE SHUT or HOTK Ctrl + Alt + #36,EXEC PECMD.EXE or HOTK ?V #255 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Example 1 indicates calling SHUT to shut down the computer after pressing the power button ║ ║ │ │☼This command cannot be used in the command line but in config file only. ║ ║ │ │☼It is suggested abandoning PELOGON.The hotkeys are unlimited. ║ ║ │ │☼The outcome of hotkeys registration is stored in "HKEY_LOCAL_MACHINE\SOFTWARE\PELOGON". ║ ║ │ │☼The command of SHEL should be located behind HOTK and HIDE so that the process of ║ ║ │ │ explorer.exe comes into being and HOTK takes effect,or just kill the current process of ║ ║ │ │ explorer.exe so that it reruns automatically and thus HOTK takes effect.For the lastest ║ ║ │ │ version of PECMD,however,HOTK takes effect in real time and is ready for use at any time. ║ ║ │ │☼Generally,only after loading SHELL with SHEL can hotkeys be registered by HOTK. ║ ║ │ │☼1:For the present version of PECMD,it is also applicable to a normal OS; ║ ║ │ │ 2:It takes effect immediately. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'IFEX' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│IFEX[|][^#~+-][*ab] [! ],[CMD1][! CMD2] //Take notice of the space behind ! ║ ║ │ │ //*ab to exclude removable disks AB ║ ║ │ │IFEX{|}[^#~+-]{*ab} {! }{$}[{! } relational calculus {! } ..],{CMD1}{! CMD2} ║ ║ │ │ //combined conditions ║ ║ │ │IFEX QureyCOND=?,VarName //to query ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│If the conditional expression holds,command group1 will be executed; If not,command group2. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │▲!Notice:"!" before indicates conditional reverse.^#~+- are the alternative ║ ║ │ │ delimiters of !. ║ ║ │PARA│☼COND:judgement to [MEMU],[DiskSpaceU],[FileDir] or [Key]. ║ ║ │ │☼MEMU:MEMNum.The unit is M,ceiling(in one method).MEMU:usable memory; ║ ║ │ │ MEMA:all memory. ║ ║ │ │☼MEMU:MEMBNum.The unit is Byte.MEMBU:usable memory; MEMBA:all memory. ║ ║ │ │☼DiskSpaceU: R:\[*]Num,R:drive letter. (MB) *:Bytes ║ ║ │ │☼Key:KEYNum. ║ ║ │ │☼FileDir:the name of file and directory,wildcards are permitted.If ended with\,it should be ║ ║ │ │ a directory. ║ ║ │ │☼number comparison:$LeftPartRightPart,the numbers can be signed floats. ║ ║ │ │ # indicates integer comparison. ║ ║ │ │☼string comparison:|LeftPartRightPart ║ ║ │ │ or "LeftPart""RightPart". ║ ║IFEX│ │☼comparison operator:comparison operator "<",">","=",">=","<=","<>","&","|","@" ║ ║ │ │ respectively indicate being less than,greater than,equal to,greater than or equal to,less ║ ║ │ │ than or equal to,unqual to,and,or,xor.&|@ are only applicable to combined conditions with ║ ║ │ │ spaces at its front and back. ║ ║ │ │☼number:numbers to compare,integer and float are supported.The unit for the disk is MB and ║ ║ │ │ the key value is the key code.GMKS can be present. ║ ║ │ │☼CMD:a command or commands to execute.Commands are separated by "|" and groups are ║ ║ │ │ separated by "!". ║ ║ │ │☼IFEX|:group mode,it indicates checking the character "|" in the params behind. ║ ║ │ │ Not to check by default to avoid errors. ║ ║ │ │☼query conditions: MEM[UA]=? MEMB[UA]=? R:\=? KEY=?Num ║ ║ │ │''indicates string comparison.[:eFileName] indicates checking the file name; ║ ║ │ │ [:pPrgmName] checking the process. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│IFEX KEY=17,TEAM TEXT Searching system fonts…| FONT \WINDOWS!TEXT Installing add-on fonts ║ ║ │ │IFEX COND1,!! IFEX COND2,! IFEX COND3, DoSth1! DoSth2 //the nesting sentence pattern,can ║ ║ │ │be combined with FIND. ║ ║ │ │IFEX [ COND1 & ! COND2 & "a b.txt" ], DoSth1! DoSth2 //example of combination. ║ ║ │ │IFEX [ $2 < 12 & C:\>10 & C:\ > 10 & ( C:\boot.ini ) & MEM > 100 ], MESS YES //example of ║ ║ │ │combination. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is powerful but complicated and can be used in nesting(IFEX or FIND) to judge ║ ║ │ │ mutiple conditions.&|@ are relation operators. ║ ║ │ │☼If this command nests FIND or IFEX,"!" should be used to separate the command groups in ║ ║ │ │ the nested command so as to avoid confusion. ║ ║ │ │ "," being closely followed by !! indicates there being no ELSE part for the convenience of ║ ║ │ │ nesting combination.The type before [ indicates all inside [] being of this type by ║ ║ │ │ default(Separate specification of type is also permitted inside). ║ ║ │ │☼The command FIND is similiar to IFEX in function. ║ ║ │ │☼If this command is used in the variable judgement,all variables will be treated as the ║ ║ │ │ type of double. ║ ║ │ │☼combined conditions:[] are their symbols,and () can be nested.S| before[ indicate all ║ ║ │ │ behind being $| comparison.S| can be absent.|&@ are relation operators.There should be a ║ ║ │ │ space after the inner-condition. ║ ║ │ │☼IFEX X: //to check if there exists the drive letter X only,likely a junk letter,though. ║ ║ │ │ (ie,though IFEX X:returns true,it will not exclude a junk letter),compatible with the ║ ║ │ │ virtual disk.IF IFEX X:\ returns true,it is certain that there is a file system in the ║ ║ │ │ drive,otherwise,there is no file system. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\ \\?\HarddiskVolume5\ \\?\ImDisk0\ ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'IMAG' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│IMAG [-gui|-size|-real|-sel|-bupdate] [*] ,[Shape],[Res],[CMD],[Color],[LinWd] ║ ║ │ │IMAG <-numicong|-numicon|-numbmp|-num:Type> VarName,,Resource // to return the numbers of ║ ║ │ │icong,icon,bmp etc.and MaxRsrcID.Icong indicates icon group. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a PicBox in the window defined by _SUB. -smooth:smooth ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before incicates being automatically recycled before qutting the block or ║ ║ │ │ function.-bupdate:to force to be in the mode of viewing picture files. ║ ║ │ │■PicBoxName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■PicShape:position and size of the picture box.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■ImgResrc:the image file(supported by Windows)to display in the specified picture box,like ║ ║ │ │ #Num|ResrcDir. ║ ║ │ │■CMD:valid commands of WinCMD,like EXEC !%CurDir%\XXX.CMD or EXEC %CurDir%\Setup.EXE. ║ ║ │ │■FrameColor:number,consisting of the normal color and active color respectively.Two numbers ║ ║ │ │ are separated by "#",like "Num1 #Num2",hex supported,like 0x00FFFF#0xFF0000.If absent,it ║ ║ │ │ is the system default color. ║ ║IMAG│ │■FrameLineW:number,indicates the size in pixel of the picture box.If "CMD" is absent or ║ ║ │ │ invalid,the active color of the frame will be invalid.-16:invisible. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│IMAG Image1,L8T380W140H70,%CurDir%\logo.gif,EXEC %CurDir%\Setup.EXE,#0xFF00FF,2 ║ ║ │ │ENVI @Image1.update=32:32:100:50::;shell32.dll#52 //change the icon. or IMAG -gui -real -sel ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼As WinCMD.EXE is a script interpreter,it is not suggested loading picture files of large ║ ║ │ │ size,or they will be displayed very slowly.Supportive of BMP,BMP compressed in RLE,JPG, ║ ║ │ │ GIF(pictures),AVI animation and so on.(Others depend on how many graphics drivers are ║ ║ │ │ installed in WINDOWS) ║ ║ │ │☼"ImgResrc" supports displaying GIF animations in the format of standard GIF89a/87a.At this ║ ║ │ │ time,the settings for FrameColor and FrameLineW will be invalid. ║ ║ │ │☼"ImgResrc" also supports resource icons in EXE or DLL with the format as ║ ║ │ │ Refer to ITEM. ║ ║ │ │☼If "CMD" not absent,the mouse will become a hand-shaped one when it moves to the picture ║ ║ │ │ box. AVI animation is supported. ║ ║ │ │☼Use "ENVI @CtrlName.Visible=Num" to set its visibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @CtrlName.update=w:h[:x:y:FramColor:FramLineW][;[*][?|][]ResFileName]" ║ ║ │ │ to update, incapable of changing the type. *:rebuild (change type) ?:show on exist ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete,applicable to other controls. |:advance Image ║ ║ │ │☼Use "ENVI @CtrlName.stat=VarName" to check whether the control is valid. ║ ║ │ │☼Use "ENVI @CtrlName.delay=ms to delay" to set the time to delay for the intervals in a GIF ║ ║ │ │ animation. ║ ║ │ │Place just before ResFileName (INC.<>), for part of it ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'IMPORT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│IMPORT FileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ I │FUNC│To directly import another module of source file,making up a large file in logic. ║ ║ M ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ P │PARA│■FileName ║ ║ O ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ R │EXMP│IMPORT TrainModule.wcs ║ ║ T ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼It can be nested with the function of anti-loop inside. ║ ║ │ │☼It is placed at the head of a file and import codes mechanically before they are executed. ║ ║ │ │ It should be a unique command in a separate line.It is not influenced by FIND/IFEX/_SUB. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'INIT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│INIT [OptionList][,TimeWait][,USBStartDrvLetter] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To carry out the basic initialization,register windows shell,initialize users directory and ║ ║ │ │environment variables,install keyboard hook and create following directories: ║ ║ │ │Favorites Programs ║ ║ │ │Desktop SendTo ║ ║ │ │StartMenu Personal ║ ║ │ │Startup QuickLaunch ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■OptionList:4 options supported,consisting of "C","I","K" and "U",which can be used in ║ ║ │ │ indefinite items,regardless of their sequence. ║ ║ │ │ Ѻ"C":to store the drive letter for CDROM in an environment variable; ║ ║ │ │ Ѻ"I":to install some functions of PECMD to the menu of tray icon; ║ ║ │ │ Ѻ"K":to install low-level keyboard hook when executing INIT,otherwise, only after loading ║ ║ │ │ SHELL will it be installed; ║ ║INIT│ │ Ѻ"U":to check the insertion of USB removable hard disk,assign drive letters automatically ║ ║ │ │ and offer the function of plug-and-play of it. ║ ║ │ │■TimeWait:number,indicates the time to wait(ms) from the insertion of the removable hard ║ ║ │ │ disk to its being ready.If the number is too small,the assignment of drive letter is ║ ║ │ │ likely to fail. ║ ║ │ │■USBStartDrvLetter:the starting drive letter for USB devices,U by default. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│INIT or INIT C or INIT CU or INIT CIK or INIT CIKU or INIT IU,3000 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼After INIT is executed and the specified SHELL is loaded by SHEL,a minimized WinPE can be ║ ║ │ │ launched immediately. ║ ║ │ │☼To ensure that there is sufficient space available in the partition containing ║ ║ │ │ %USERPROFILE%,or INIT will not fulfill its task. ║ ║ │ │☼With the option "C",the drive letter for CDROM will be stored in an environment varialbe ║ ║ │ │ beginning with CDROM(It takes effect only after refreshing with the command of ENVI ║ ║ │ │ without any param). ║ ║ │ │☼With the option "I",an icon menu,integrated with some commonly used functions,will appear ║ ║ │ │ in the tray.The custom personnel of WinPE can modify these functions of the menu. ║ ║ │ │☼With the option "K",it indicates installing the keyboard hook immediately to take over ║ ║ │ │ Ctrl+Alt+Del to summon the task manager. ║ ║ │ │☼With the option "U",the command will achieve the function of plug-and-play for the ║ ║ │ │ removable hard disk,which can be removed by "EJEC U-" or from the tray menu thence. ║ ║ │ │☼If "TimeWait" is absent,a default value(3000) will be adopted; If the option "U" is absent ║ ║ │ │ ,so shall "TimeWait". ║ ║ │ │☼It is not suggested for INIT in publicly-issued WinPE to carry the option "K".This command ║ ║ │ │ is only applicable to the config file not to command line. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'IPAD' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│IPAD [*] ,,[InitVal],[Event],[Type] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a control for IP address. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ * before indicates being automatically recycled before quitting block or function. ║ ║ │PARA│■Name:string,should be unique and not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■Shape:the position and size of the editbox.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■InitVal:string,AA.BB.CC.DD ║ ║IPAD│ │■Event:the command to execute upon the notification of data change. ║ ║ │ │■Type:number(in accumulation),0 by default,a normal editbox.Minus:disabled,0x10:invisible. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│ IPAD IPAD1,L32T244W240H24,192.168.1.100,Mess ENVI @Name.VAL=?.FullIP ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼"ENVI @Name.Enable=[#]Num",0:disabled; 1:enabled(not to respond).#:used in the subprocess. ║ ║ │ │☼Use "ENVI @Name.Visible=Num" to set its invisibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @Name.VAL=Num1.Num2.Num3.Num4" to set IP. ║ ║ │ │☼Use "ENVI @Name.VAL=?[.]Name1; Name2; Name3; Name4" to return IP."." indicates Name1(If ║ ║ │ │ the control name Name1 is absent,so can "." together with "Name1")returning full IP. ║ ║ │ │☼Use "ENVI @Name.VAL=#Pos" to set the position of the cursor.1~4. ║ ║ │ │☼Use "ENVI @Name.VAL=#Pos:StartRange:EndRange" to set the range of numbers.0~255. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'ITEM' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│ITEM [-na] [-b[:ParentHwnd]] [-right] [-left] [-def] [-font:FontSize:FontNameAdorn] [*] ║ ║ │ │ ,,[ButtonTitle],[ButtonEvent],[ButtonIcon],[Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a button in the window defined by _SUB.-pcenter:picture center aligned; -round: ║ ║ │ │oval button; -nscope:no frame; -def:ENTER applicable; -na:not active -b:bind to parent ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function.-nfocus:no focus. ║ ║ │ │■ButtonName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■ButtonShape:position and size of the button.The format is . ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■ButtonTitle:characters on the button to describe the function of the button and the ║ ║ │ │ command to execute. ║ ║ITEM│ │■ButtonEvent:the command to execute when the button is clicked.It should be a valid command ║ ║ │ │ supported by WinCMD. ║ ║ │ │■ButtonIcon:the icon displayed on the button with the format as ,IconSize = ║ ║ │ │ ButtonH - 6. ║ ║ │ │■ButtonStatus:number,default 0:enabled,minus:disabled,16:invisible,4:in multiline. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│ITEM Button3,L32T108W300H54,resource manager,EXEC explorer.exe,%SystemRoot%\explorer.exe ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼Use "ENVI @ButtonName=ButtonTxt" to set the text on the button. Refer to ENVI. ║ ║ │ │☼Use "ENVI @ButtonName.Enable=[#]Num" to set its serviceablilty,0:disabled; 1:enabled(not ║ ║ │ │ to respond).#:used in the subprocess. ║ ║ │ │☼Use "ENVI @ButtonName.Visible=Num" to set its visibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @ButtonName.color=[Color]" to set the text color. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'KILL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│KILL[**] [-force] [-exitcode=NUM] [-explorer] ║ ║ │ │KILL -svr2 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To terminate a specified process by force.NUM refers to the exit code of the process. ║ ║ │ │-svr2 aims at MESS-svr2, -force:to kill the process by force. KILL**:Forced synchronization ║ ║ │ │-explorer indicates that explorer.exe will not automatically restart. -gui:process manager ║ ║ │ │-tree pid_tree, -1 once ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║KILL│PARA│ProcName,that is EXE FileName(or path), including *?.pid refers to process ID(PID).If ║ ║ │ │ WinTitle/WinName is absent,the current window is referred to. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│KILL WinLogon or KILL \%ABC% or KILL -exitcode=0 *123 or KILL @ABC ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │This command will terminate all the processes whose names match the front part of "ProcName" ║ ║ │ │Therefore if the param is absent,all processes are likely to be killed. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LABE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LABE[-|+.*>] [-right -center -left -trans -nf -w -vcenter -ncmd -3D] [-mod] [*] ║ ║ │ │ ,,[LabelTxt],[*][CMD],[ColorSet],[FontSize:[FontName]] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a static text label in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■- and | indicate horizontal and vertical scroll bar(only to be viewed,not changeable,or ║ ║ │ │ use EDIT instead),+ indictates being with frame; . indicates not converting "\n" here; ║ ║ │ │ > means ENVI @ convert \n; * indicates preinterpreting the event(variable).Notice that the ║ ║ │ │ params above should follow the command of LABE closely without any space,regardless of ║ ║ │ │ sequence.[-right]text right aligned,[-center]text center aligned,[-left]text left aligned, ║ ║ │ │ [-trans]:transparent label,-3D:3D outline.-mod:outline. -nf:not flash. -w:Auto wrap ║ ║ │ │ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function.-vcenter is only applicable to a single-lined text.-ncmd:no features of a command ║ ║ │ │■LabelName:string,should be unique,not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■LabelShape:the position and size of the label.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■LabelTxt:string,the text to be displayed in the label,supportive of display in multiline, ║ ║ │ │ "\n" as the line break. ║ ║ │ │■CMD:valid command of WinCMD,like EXEC $%CurDir%\a.TXT or EXEC $http://mdyblog.blog.163.com ║ ║ │ │ * indicates not displaying a hand-shaped cursor. ║ ║ │ │■ColorSet:number,consisting of such 4 groups of colors as the normal text color,normal ║ ║ │ │ background color,active text color and active background color respectively,separated by ║ ║ │ │ "#",like "Num1#Num2#Num3#Num4",hex number supported,like 0x00FFFF#0xFF0000#0x0000FF#0000. ║ ║ │ │ Any of them absent,a system default value will be adopted.If no # follows a certain number ║ ║ │ │ in the second active color group,it will be the same as the corresponding color in the ║ ║ │ │ former normal group; If there is no or only one #,the two groups of color will be the same ║ ║ │ │■FontSize:number,hex number supported,like 0x0A.If absent,the system default font size will ║ ║ │ │ be adopted.16:invisible. ║ ║LABE├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LABE Label1,L20T280W128H48,Please click "Open" to view the files. ║ ║ │ │LABE Label2,L20T24W80H20,Help Instruction,EXEC %CurDir%\ReadME.EXE,0xFF0000,12 ║ ║ │ │LABE Label3,L20T48W80H20,DSystem,EXEC $http://mdyblog.blog.163.com,0x000000##0x0000FF,14 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼LABE is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼If "BkColor" or "CMD" is set,"LabelTxt" will be displayed center-aligned and the center ║ ║ │ │ aligned text cannot be displayed in new lines. ║ ║ │ │☼To set the text on the label,use "ENVI @LabelName=LabelTxt". Refer to ENVI. ║ ║ │ │☼If "CMD" refers to executing websites by the command of EXEC,a string of website "//" can ║ ║ │ │ be contained. ║ ║ │ │ If "CMD" is present,the mouse will become a hand-shaped one when it moves on to it. ║ ║ │ │☼Neither "LabelTxt" nor "CMD" is allowed to contain the character ",".If they must,a ║ ║ │ │ variable can be employed to store the character for its referencing(%DouHao%). ║ ║ │ │ "LabelTxt" can be set in the next command of ENVI,or set by ENVI in a timer,which is ║ ║ │ │ triggered once after the window is started.The "CMD" can be fulfilled by the command of ║ ║ │ │ CALL and executed in the mode of preinterpretation(%MYCMD%). ║ ║ │ │☼The system default font size and color may vary in different systems as it has something ║ ║ │ │ to do with the system settings. ║ ║ │ │☼Use "ENVI @LabelName.Visible=Num" to set its visibility; 0:invisible; not 0:visible. ║ ║ │ │☼As for the message,there is no default one.The message will be activated if there is a ║ ║ │ │ command.If there is no command yet a message is needed,it can be placed in the command ║ ║ │ │ field with *.Once the message is activated,the control shielded by it will be inoperable. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LINK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LINK[AltDelimiter] [--f] [-][_|^|!]<,DestPath>[,ExecParam][,IconPath#IconIdx][ ║ ║ │ │ ,Rem] [,StartPos][,HK] ║ ║ │ │LINK[AltDelimiter] [--f] [-][_|^|!]<,DestPath>[,ExecParam][,IconPath][,IconIdx ║ ║ │ │ ][,Rem][,StartPos][,HK] <==Old style ║ ║ │ │LINK[AltDelimiter] ? [--f] ShortcutPath,[DestPathVarName][,ExecParamVarName][,IconPathVarNam ║ ║ │ │ [#[IconIdxVarName]]][,RemVarName][,StartPosVarNam][,HKVarNam][,DspMarkVarNam] //to query ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│To create a shortcut. ^#~+- is AltDelimiter ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║LINK│PARA│■ShortcutPath:to specify a path for the shortcut to create without the extension ".LNK". ║ ║ │ │ --f:not to add ".LNK" automatically. ║ ║ │ │■DestPath:to specify the destination file or directory for the shortcut.If not exist,the ║ ║ │ │ shortcut will not be created.If this command is used in a command file,the DestPath can be ║ ║ │ │ a relative one(relative to the path containing the config file) ║ ║ │ │■ExecParam:the execution params for the target program. ║ ║ │ │■IconPath:the path of the shortcut icon. ║ ║ │ │■IconIdx:the index number in the file resources for the shortcut icon,0:the first icon; ║ ║ │ │ absent:default. ║ ║ │ │■HK:hotkey,the "#" or "," before IconIdx cannot be absent at this time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LINK !%Desktop%\ADSLConnection,RASPPPOE.CMD,,RASDIAL.DLL#19 ║ ║ │ │LINK ? %DeskTop%\ADSLConnection,&FN,&ARG,&FICON#&IICON,&COMMENT,&START,&KEY,&fSHOW ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │♫"_" indicates starting the program in the way of being minimized and "!" hidden,both of ║ ║ │ │ which can be used to minimize and hide the window of the command."^" indicates being ║ ║ │ │ maximized."*" indicates creating a shortcut by force though DestPath does not exist. ║ ║ │ │ "," can be transfered to a variable. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LIST' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LIST [-h] [*] ,,,[ListboxEvent],[InitSelItem],[Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a listbox in the window defined by _SUB. ║ ║ │ │◙Notice:-h:H will limit the height of pulling-down◙ ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │PARA│■ListboxName:string,should be unique,not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■Shape:the position and size of the listbox.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■ListboxContent:the items to select in the listbox.Items are separated by "|". ║ ║ │ │■ListboxEvent:the command to execute when the selected item is shifted to another in the ║ ║ │ │ listbox.It should be a valid one supported by PECMD. ║ ║ │ │■InitSelItem:the selected item in the listbox when initializing its settings. ║ ║ │ │■Status:number,minus:disabled.0x4:editable listbox,0x200:simple listbox,0x10:invisible, ║ ║ │ │ 0x100:with automatic vertical scroll bar,0x400:to sort automatically,0x800:capital,0x1000: ║ ║ │ │ lowercase.0x2000:not to trigger a command when editing.0x4000:to support dragging files in ║ ║ │ │ 0x10000:not to triger a command when setting. 0x20004:ReadOnly editable listbox ║ ║ │ │ 0x40000/0x80000:Left/Top align 0x100000:Specifie width -vcenter:RefHeight:Vertical center. ║ ║ │ │ Mouse Hover:WM_COMMAND:CBN_HOVER=0x7001,lp=id 0x7002,lp=ListHwnd ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║LIST│EXMP│LIST List1,L200T360W128H232,EXPLORER|XPLORER2|CMD,ENVI @Label1=%List1%,EXPLORER ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼LIST is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼Use "ENVI @ListboxName=[+|-|:]ItemContent or ItemList" to modify the items in the listbox. ║ ║ │ │ "+":to add items to the listbox with the format "ENVI @ListboxName=+item to add or select" ║ ║ │ │ "-":to delete the specified item with the format "ENVI @ListboxName=-item to delete" ║ ║ │ │ ":":to select the specified item with the format "ENVI @ListboxName=:item specified" ║ ║ │ │ No leading character indicates initializing all items of the listbox with the format ║ ║ │ │ "ENVI @ListboxName=Item1|Item2|Item3...".Practically only "Item1" is effective and it is ║ ║ │ │ the one to add or select,so it is with =+.Therefore,the item content in the listbox cannot ║ ║ │ │ begin with such characters as "+","-" and ":".They can be transfered to a variable. ║ ║ │ │☼ENVI @ListboxName.ADDSEL=item to add or select. ║ ║ │ │☼ENVI @ListboxName.DEL=item to delete. ║ ║ │ │☼ENVI @ListboxName.SEL=item to select. ║ ║ │ │☼ENVI @ListboxName.VAL=to reset multiple items to add. //separated by |; the original ones ║ ║ │ │ are cleared. ║ ║ │ │☼ENVI @ListboxName.ADD1=multiple items to add. //separated by | ║ ║ │ │☼ENVI @ListboxName.ADD=multiple items to add. //string in multiline ║ ║ │ │☼ENVI @ListboxName.QUERY=LineNum; VarName //If LineNum absent,all returned in multiline ║ ║ │ │☼Use "ENVI @ListboxName.Enable=Num" to set its serviceability.0:disabled,not 0:enabled. ║ ║ │ │☼The variable %ListboxName% is the selected item(string) in the listbox. ║ ║ │ │☼The variable %ListboxName.isel% is the sequence number of the selected item(starts from 1) ║ ║ │ │☼ENVI @ListboxName.isel=the sequence number of the selected item. ║ ║ │ │☼Use "ENVI @ListboxName.Visible=Num" to set its visibility; 0:invisible; not 0:visible ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LOAD' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LOAD [-del] [--m] [|Offset[|LenLmt]][*FuncName] ║ ║ │ │ [,StartDrvLetter] [ParamList] ║ ║ │ │LOAD <*[FileName]##InternalScriptID[:Dir]>[|Offset[|LenLmt]][*FuncName] FriendlyAlias ║ ║ │ │ [Param] //friendly type ║ ║ │ │LOAD [--logs:[*]logFileName] --mem VarName [CmdLineParam] //to run dynamic memory file code ║ ║ │ │//switch --logs:[*]logFileName] //switch --Local :Forcelocal=1 Mode ║ ║ │ │//switch --EnviMode:EnviMode=1 Mode //switch --ncd:not to transfer the current directory ║ ║ │ │ or set environment variables(multithread). ║ ║ │ │//switch -:not to transfer the lasting stack. ║ ║ │ │//switch -this or -*:not to transfer the lasting stack or executing stack. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To execute the command in the config file one by one. //Notice:The null character in the ║ ║ │ │file name should be bracketed with "". ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■specified FileName(containing path,supporting environment variables)and params. ║ ║ │ │ Offset:start from this.The Offset and LenLmt support TGMKS. ║ ║ │ │■-del:to delete the script after loading it. --m \:to execute all sought files in the ║ ║ │ │ partition one by one.--m absent,to execute the first sought file only. ║ ║ │ │■*FuncName:to call the function in the file and exit. ║ ║ │ │■|Dir:If Dir is a string of pure numbers,it should be bracketed with a pair of " or ' or ║ ║ │ │ transformed to the format as ":Dir". ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LOAD \outpart\PECMD.INI A B or LOAD #102 A B or LOAD "X:\Program Files\a.ini" "1 x" 2 ║ ║ │ │LOAD --mem &MyStript A B C For FileName #123, LOAD #123 p1 should be written as: ║ ║ │ │LOAD .\#123 p1 ║ ║LOAD├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Each command is in a separate line and commands of the main process are executed totally ║ ║ │ │ in proper order,ignorant of invalid ones or blank lines. ║ ║ │ │☼The config file supports the whole-line note and post-line note.For the former,"//" ║ ║ │ │ (suggested),"; " or "`" can be used and the latter," //" or "; " or "`" can be used. ║ ║ │ │☼In a config file,the environment variable "%CurDir%" indicates the current directory and ║ ║ │ │ "%CurDrv%" the current drive letter. ║ ║ │ │☼If the first non-quote character in FilePath is "\",the command will search the specified ║ ║ │ │ directory on all the disks for the file,like "LOAD \MyWinPE\PECMD.INI". ║ ║ │ │☼If the directory containing the config file is set as the current directory,when a ║ ║ │ │ shortcut is to be created,a relative path can be used for the DestPath of the shortcut. ║ ║ │ │☼For others,refer to MAIN.Offset[+LenLmt] makes it possible to run devices or fragments of ║ ║ │ │ non file system and merge scripts. ║ ║ │ │☼LOAD supports specifying a character set for file encoding.Before the compression of CMPS: ║ ║ │ │ If BOM exists,the compression is based on it,otherwise the charater set is specified in ║ ║ │ │ the first line with "#code=CharSetNum"; If the first line begins with #!,the character set ║ ║ │ │ should be specified in the second line.BOM includes UNICODE,UNICODEBE and UTF8. ║ ║ │ │☼friendly type:to specify FriendlyAlias as %0 instead of RsrcName containing #. ║ ║ │ │ The resource directory of script ID is SCRIPT by default. ║ ║ │ │☼The FilePath or a certain param should be bracketed with a pair of double quotes if they ║ ║ │ │ contain null characters.Otherwise,they will be separated. ║ ║ │ │☼If the command word LOAD is not absent,the first literally successive string will be ║ ║ │ │ treated as FileName regardless of the possibly existing variable of null character(the ║ ║ │ │ content of the variable contains null character).The corresponding double quotes around ║ ║ │ │ the string can be absent at this time.(compatible with ver4.0). ║ ║ │ │♫Please adopt the command line standards of windows and linux as the ones for writing ║ ║ │ │ commands,which are also the standard writing practice for the command of LOAD. ║ ║ │ │♫To avoid confusing FileName with #ScriptID behind,FileName can be bracketed with quotes. ║ ║ │ │ FileName can be non-figure characters. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LOCK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LOCK [--exist|--try[*]] [-backlevel:][#[#]]Lock1Name Lock2Name Lock3Name... [,RetVarName] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To apply for mutiple automatic genius locks in the stack of the current function and get all ║ ║ │ │the specified ones locked/released at the same time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║LOCK│PARA│■LockName:a string of normal letters,figures or Chinese characters.# indicates process lock ║ ║ │ │ among processes; ## indicates system lock between different terminal services; Otherwise, ║ ║ │ │ it refers to the thread lock inside the process.Not case sensitive.Generally,different ║ ║ │ │ login users can use #%USERNAME%#subname,as well as GUID,like ║ ║ │ │ {5ACCA58C-8EAB-410E-9263-C5ADAD0D8F9B}. ║ ║ │ │■backlevel:a positive number,0 by default.It indicates no destruction after exit but minus ║ ║ │ │ one and being upgraded one level,used in the subprocess to create a lock and calculated ║ ║ │ │ according to the minimum number from head here. ║ ║ │ │ --exist:to check if there exists such a lock.0:not exist,1:exists,-1:failed.It mainly aims ║ ║ │ │ to avoid many times of locking. ║ ║ │ │ --try:try to lock.0:locked successfully,1:failed to lock.If locked,an operation of void ║ ║ │ │ locking by using --try* is practicable. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LOCK SellTrainTicket QueryTrainTicket or LOCK --exist #TrainTicketSellSys or LOCK .thread ║ ║ │ │ or LOCK .ole ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Programmers do not need to unlock.Unlocking occurs when the function returns,the window ║ ║ │ │ destructed or the program quits the block.It will not be easy to give rise to interlocking ║ ║ │ │ if the multiple locks are all locked together at the same time.Repeated locking is ║ ║ │ │ permitted.It is a good habbit to put the command at the very head of a function or in the ║ ║ │ │ same line closely following {. .thread indicates multi-thread synchronization; ║ ║ │ │ .ole indicates OLE synchronization. ║ ║ │ │ An appointment:#pecmd indicates the common instant lock to atomize a set of operations. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LOGO' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LOGO [-] [-enable] [-wait] [-trans:Transparency] [FilePath][,Color] ║ ║ │ │LOGO [-] [-enable] [-top] [-trans:N] --[,TranspColor] //to prepare a vancus for the command ║ ║ │ │of TEXT,background color by default. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set or close the login screen.-:quick exit without fading out.-top:to be on the top. ║ ║ │ │-enable:to press ESC to exit.-wait:to wait for the end of the animation. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│☼FilePath is the name of a picture(path included) supportive of the format BMP/JPG/PNG/GIF ║ ║ │ │ and so on(need the support of GDI+). ║ ║ │ │☼Color indicates the background color,hex number supported.If both the LOGO picture and ║ ║ │ │ background color are set,the display priority will be given to the LOGO picture. ║ ║ │ │☼If the LOGO picture is invalid,the background color will be enabled; If the background ║ ║ │ │ color is invalid,an internally defined background color in the registry will serve as the ║ ║ │ │ alternate. ║ ║ │ │☼If there are no params,the startup screen will be closed(fading out).Transparency:0-255 ║ ║ │ │ //The transparent color is not applicable to a text. ║ ║LOGO├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LOGO %SystemRoot%\XCMD.JPG ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is executed in a non-blocking mode.The next command will be immediately ║ ║ │ │ executed after its execution is finished.Therefore,if it is used in a command line,use the ║ ║ │ │ command of WAIT to delay,or the program will exit right away without displaying the effect ║ ║ │ │ of execution. ║ ║ │ │☼This command can be emloyed for many times.Changing different pictures in the process of ║ ║ │ │ startup is practicable if you want to do so. ║ ║ │ │☼A call of the command "LOGO" without any param is required before quitting the config file ║ ║ │ │ to close the startup screen. ║ ║ │ │☼The memory for the LOGO picture is required to be a bit larger when it is used. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LOGS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LOGS [--thread[@+] --lock:CheckNum --RAW=0/1 --ON=0/1 --p[-] --2[-] --t=0/1 --ln=1/0 ║ ║ │ │ [--rt=1/0 --a --abak --tmp --vol[+] --part --rt[?]] [[*?FilePath][,Num]] ║ ║ │ │LOGS * //to flush to the disk immediately and then release memory without closing the log ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a log file to record the execution outcome of every command so that users can ║ ║ │ │verify the validity of the config file. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│☼FilePath:refers to the name of the log file including its path. ║ ║ │ │ --thread for cur thread only. @:Common +:Both None for Close:Close Both ║ ║ │ │ --rt or * indicates realtime mode and flushing to the disk immediately. ║ ║ │ │ --rt=1/0:to set the realtime mode. ║ ║ │ │ --p:to print before execution; --2:to print before and after execution; ║ ║ │ │ The suffix - means cancel,--t= indicates printing the time thread,--a:to append to the LOG ║ ║ │ │ --ln:the line number; ║ ║ │ │ --np[-] indicates no logging according to the automatic judgement before execution; ║ ║ │ │ --ON= indicates the local switch to open or close the logs; ║ ║ │ │ --RAW= indicates the local switch to export raw text without interpreting variables in it. ║ ║ │ │ --rt? indicates the restoring mode(only to close the log file if "--rt?" is not followed ║ ║ │ │ by FilePath). ║ ║ │ │ --abak restore this LOGS on child LOGS out of range. ║ ║ │ │ --tmp retore old LOGS on this LOGS out of range. --lock:CheckNum:for operate ║ ║ │ │ --part &__LOGS is \\?\\Harddisk#Partition# --vol &__LOGS is volume --vol+BOTH ║ ║ │ │ LOGS --ln=0/1 LOGS --np[-] can be written as: ENVI^ logs_ln=0/1 ENVI^ logs_np=0/1 ║ ║LOGS│ │☼Num:unlimited actually.More records in the log file demand larger disk space. ║ ║ │ │ The command led by @ indicating not writing records into the log file. ║ ║ │ │ *?:equal to --rt --rt? ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LOGS X:\PECMD.LOG or LOGS * CONOUT$ //to debug the terminal; LOGS --a --rt --rt? %&OldLOGS% ║ ║ │ │//to restore the LOG. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The command of "LOGS" without any param should be called once more to close the log file ║ ║ │ │ before accomplishing the config file.It is automatically executed before the program exits ║ ║ │ │☼This command is not applicabile to the command line but to config file. ║ ║ │ │☼It is not suggested using a log file in some publicly-issued WinPE.It is only intended for ║ ║ │ │ debugging. Restricted in message processing. ║ ║ │ │☼The config file lies in the directory containing the caller by default,as ║ ║ │ │ X:\windows\system32\pecmd.ini indicates X:\windows\system32\ and X:\OrderUSB.WCS indicates ║ ║ │ │ X:\; It is also permitted to directly specify FilePath like X:\pecmd_debug.log(X:R&W). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LOOP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LOOP ,[!] ║ ║ │ │LOOP {! }{$#}[{! } relation operator {! } ...],{!} //combined ║ ║ │ │conditions ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To check the loop conditions and execute the loop commands. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■LoopCond:The format is [$#]Var1[Var2],'$' indicates string comparison ║ ║ │ │ (not case sensitive); or 'leftpart''rightpart','#' refers to integer ║ ║ │ │ comparison(INT64).The Leading character being absent or | indicates comparison of Double ║ ║ │ │ varialbe. ║ ║ │ │☼comparison operator:"<",">","=","!",">=","<=","!=","<>" respectively indicates:less than, ║ ║ │ │ greater than,queal to,unequal to,great than or equal to,less than or equal to,unqual to, ║ ║ │ │ and equal to. ║ ║LOOP│ │■LoopCMD: '!' indicates inverting the outcome of the condition judgement first.The command ║ ║ │ │ will be executed in a loop until the condition holds. ║ ║ │ │☼combined conditions:[] are their symbols,and () can be nested.S| before[ indicate all ║ ║ │ │ behind being $| comparison.S| can be absent.|&@ are relation operators.There should be ║ ║ │ │ spaces between combined conditions,as well as before and behind the relation operators |&@ ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LOOP #%Number%<100,CALL DoLoop or LOOP $%Characters1%=%Characters2%,!CALL DoLoop ║ ║ │ │LOOP [ COND1 & ! COND2 & COND3 ], DoSth //example of combination. ║ ║ │ │LOOP [ #2 < 12 & $7 < 8 & 4 < 10 ], MESS LOOP1 //example of combination. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼There should be a command to modify the varialbe in the LoopCMD,or the loop will not end ║ ║ │ │ (endless loop); It is suggested placing the loop body in the sentences defined by _SUB and ║ ║ │ │ _END. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LPOS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LPOS[*] [*] [-case] [[*][~]VarName][,[~]LineVarName]=Char,Num,Str //prefix* for many ║ ║ │ │LPOS**[*][#$] [-qu] [-delims:Separator] [-case] [[~]VarName][,[~]LineVarName]=SubStr,Num,Str ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the position of the specified "Char" from the left of the "Str". ║ ║ │ │* indicates a VarName behind. ~indicates figuring out the position from right. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the outcome of the command; -case:case sensitive. ║ ║ │ │■Str:the string to check,any character or space permitted. ║ ║LPOS│ │■Char:the character to check,not case sensitive,any character or space permitted.Multiple ║ ║ │ │ characters will be treated in the substring mode.If the substring is",",it should closely ║ ║ │ │ follow =. ║ ║ │ │■Num:to specify the number of times the character to check appears,1 by default. ║ ║ │ │■LPOS*:It is the SubStr to search for,ie,the part between "=" and ",",any character or ║ ║ │ │ space permitted. ║ ║ │ │■LPOS**:It is the SubStr to search for and return a string number separated by space. ║ ║ │ │ number>=1; *** or -qu:to be compatible with MSTR; $:only space; #:only TAB,or -delims: ║ ║ │ │ to specify the separator(\n\r\t\v\f\b supported). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LPOS iPos=a,2,123A56|1234A6|abcdef or LPOS iPos=a,3,123A56|1234A6|abcdef ║ ║ │ │LPOS*** &&P2="BB FF 199",,AA "BB FF 199" DD ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If "Num" is smaller than 1,the command will return the position of the character to check ║ ║ │ │ from the right of the string,eg,the outcome of the example above is 15; If the returned ║ ║ │ │ outcome is 0,that means no specified character is found. ║ ║ │ │☼This command will treat the string in Unicode.The returned value of example 1 is 1 and ║ ║ │ │ example 2 is 15(the same as the outcome when Num is 0). ║ ║ │ │☼The character starting from the second one of the substring cannot be ",",but the first ║ ║ │ │ one and the character mode can be ",".It can be transfered to a variable in that case. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LSTR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│LSTR [*] , ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To cut out the specified number of characters from the left of a specified string and return ║ ║ │ │the outcome to a specified variable. * indicates a VarName behind. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to restore the outcome of the command; ║ ║LSTR│ │■Str:the source string,lenghth unlimited; ║ ║ │ │■Num:the number of the characters to cut out. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│LSTR aStr=2,1234567890 or LSTR aStr=5,1234567890 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If "Num" is smaller than 1 or exceeds the length of the source string,the returned outcome ║ ║ │ │ will be the whole source string(the same as the string copy); ║ ║ │ │☼This command deals with the string in Unicode.The returned value of example 1 is "12",and ║ ║ │ │ example 2 is "12345". ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MAIN' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MAIN[*] [--user] [--wait] [FilePath|CMD begin with TEAM or EXEC] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To initialize the desktop,take over Ctrl+Alt+Del and create a new process to fulfill the ║ ║ │ │functions of LOAD. --user:of user level. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■to specify the path of the config file to initialize.* indicates hiding the daemon ║ ║ │ │ immediately.If the specified file does not exist and the #102 script is not blank,the #102 ║ ║ │ │ script will be adopted. ║ ║MAIN├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MAIN %SystemRoot%\System32\PECMD.INI ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼MAIN aims to create the process of LOAD,resident in the memory after executing LOAD.It ║ ║ │ │ will install the keyboard hook to hook the function of "ExitWindowsEx". ║ ║ │ │☼It is suggested using PECMD MAIN directly instead of PELOGON.EXE. ║ ║ │ │☼The command of LOAD will automatically quit the memory after it fulfills the function of ║ ║ │ │ loading files. Refer to LOAD for more. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MDIR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MDIR DirName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│■To create a specified directory. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║MDIR│PARA│DirName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MDIR %TEMP% ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼MDIR aims to create multilevel directories,supporting a directory name in the form of ║ ║ │ │ an environment variable. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MEMO' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MEMO[-|+.] [-right] [-center] [-vcenter] [-rich] [*] ║ ║ │ │,[,EditboxContent][,DestFileName][,EditboxType][,EditboxColor] ║ ║ │ │[,Font] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a multiline editbox in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■- indicates no horizontal scroll bar,| no vertical scroll bar,+ no frame,.indicates not ║ ║ │ │ converting \n or esle converting.Notice that params above should closely follow the ║ ║ │ │ command without a space,regardless of the sequence. ║ ║ │ │ The text is left aligned by default,-right:right aligned,-center:center aligned,-rich: ║ ║ │ │ supportive of setting colors. -u2d unix2dos ║ ║ │ │ * before indicates being automatically recycled after quitting the block or ║ ║ │ │ function. ║ ║ │ │■EditboxName:string,should be unique,not the same as those of other controls or environment ║ ║ │ │ variables. ║ ║ │ │■EditboxShape:position and size of the editbox.The format is:, ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■EditboxContent:the content to fill the editbox when it is initialized,multiline supported, ║ ║ │ │ \n or the native newline to break the line.A comma can be transfered to a variable. ║ ║ │ │■DestFileName:to specify the name of the text file,from which the content of the editbox is ║ ║ │ │ loaded.It will be ignored if the content is already specified. ║ ║ │ │■EditboxType:Num(in accumulation),absent or 0 by default,indicating an editable multiline ║ ║ │ │ editbox."-":disabled; 0x8bit:read only; 0x10bit:invisible; 0x20bit:editable and support ║ ║ │ │ automatic newline; 0x40bit:to jump to the end; 0x100:to accept a file name dragged in; ║ ║ │ │ 0x200:to accept all file names dragged in,in multiline; 0x400:number.(for compatibility) ║ ║ │ │ 1-15:read-only. ║ ║MEMO│ │■EditboxColor:font,see EDIT. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MEMO Memo1,L304T268W280H88,,%CurDir%\Readme.TXT,0 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼MEMO is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼If [EditboxContent] is not blank,[DestFileName] will be ignored.If blank,the content ║ ║ │ │ specified by [DestFileName] will be loaded.For the convienience of reading in the notepad, ║ ║ │ │ the overlong "EditboxContent" can be transformed into a new envrionment variable of string ║ ║ │ │ by combining the nestedly assigned environment variable and a string cut out from the rest ║ ║ │ │ of EditboxContent. ║ ║ │ │☼Use "ENVI @EditboxName.Enable=[#]Num" to set its serviceability,0:disabled; 1:enabled (not ║ ║ │ │ to respond).#:used in the subprocess. ║ ║ │ │☼Use "ENVI @EditboxName.ReadOnly=Num" to set the status of read-only.0:not read-only; ║ ║ │ │ not 0:read-only. ║ ║ │ │☼ForeColor and BkColor support hex numbers in the format of C,like 0xFFFFFF. ║ ║ │ │☼Use "ENVI @EditboxName.Visible=Num" to set its visibility; 0:invisible; not 0:visible. ║ ║ │ │☼Use "ENVI @EditboxName.LINE=Num" to make a certain line visible. Refer to EDIT for more. ║ ║ │ │☼Use "ENVI @EditboxName.Color=..."to set the color and font. See EDIT. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │MODL│ѺHow to use the modified content in the editbox as a new variable by assigning it. ║ ║ │ │ A:%EditboxName% like: ║ ║ │ │ ENVI$ &&NL=0d 0a ║ ║ │ │ EDIT| EDIT2,L36T25W187H49,EDIT2,,0x24 ║ ║ │ │ MEMO MEMO1,L38T81W182H77,MEMO1,, ║ ║ │ │ MESS. EDIT2⌠%EDIT2%⌡ %&NL% MEMO1⌠%MEMO1%⌡@#OK ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MENU' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MENU [-bar] [-sub] ,[Title],[Event],[Status][,BMP] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To add a menu item to the user-definied menu of the tray icon.-bar:window menu(indispensable ║ ║ │ │for the first command of MENU,optional for the subsequent ones); ║ ║ │ │-sub:Params behind belong to a submenu(_SUB). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■Name:string,except the dividing line,it should be unique,not the same as those of other ║ ║ │ │ controls and environment variables. ║ ║ │ │ If Name or the first character of it is "-",it indicates a dividing line,or it is a normal ║ ║ │ │ menu item. ║ ║ │ │■Title:characters on the menu item to describe the functions or instructions of it. ║ ║ │ │■Event:the command to execute when the menu item is clicked.It should be a valid command ║ ║ │ │ supported by PECMD.*** indicates quitting the tray icon. ║ ║MENU│ │■Status:0 by default,indicating a normal menu,- or ±1 indicates being disabled. 2:dividing ║ ║ │ │ line 4:checked 8:to hide. 0x20:subfield ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MENU Menu2,definition 1024X768 color 32 bit RefRate 85,DISP W1024H768B32F85 or MENU - ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼MENU is generally located beyond _SUB and _END. ║ ║ │ │☼The icon for the tray icon menu is determined by the window icon defined by _Sub.If it is ║ ║ │ │ absent,the main icon of PECMD will be adopted. ║ ║ │ │☼MenuItemTitle is referenced via the environment variable %MenuItemName%,including ║ ║ │ │ %MenuItemName.Enable%. ║ ║ │ │☼Use "ENVI @MenuItemName=NewTitle" to set and modify MenuItemTitle. ║ ║ │ │☼Use "ENVI @MenuItemName.Enable=Num" to set the serviceability of the editbox; 0:disabled; ║ ║ │ │ 1:enabled. ║ ║ │ │☼Use "ENVI @MenuItemName.ID=?[hmenu][;CtrlIDVarName][;MenuItemSN]" to query IDVarName etc. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MESS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MESS[-*=.-svr-svr2-max-min-size-close-top-icon[-x:x][-y:y][*]Num][-sub:LxTy:ObjName] ║ ║ │ │ [TxtContent][@MsgWinTxtTitle][#MsgWinType[*TimeAutoClz(ms)][$DefaultOption]] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To display a [Yes/No] message window or a message window with a [Confirm] button. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■MsgWinTxtContent:supportive of a multiline text.Use "\n" to break the text lines or adopt ║ ║ │ │ the primitive multiline text.Any character is permitted.Null characters behind MESS will ║ ║ │ │ be retained. ║ ║ │ │ "." or -raw after MESS indicates not converting "\n".Special characters can be transfered ║ ║ │ │ to a varialbe.-svr or -svr2:to display the window before login. ║ ║ │ │ +max:with maximize button, +min:with minimize button, +size:size ajustable, +close:without ║ ║ │ │ close button.+top:to be on the top,-x/y:position on the screen. +var:Text is VAR ║ ║ │ │ insvr:Display on User desktop in service. +txt static text +cb to clipboard ║ ║ │ │■MsgWinTxtTitle:any single-lined text except @. Null characters behind MESS will be ║ ║ │ │ retained.Special characters can be transfered to a variable(%Mouse%). ║ ║MESS│ │■MsgWinType:Presently support "YN","OK",“YNC","OKC","RETRY" and "ABORT"."OK" by default. ║ ║ │ │■If time for automatically closing is set as 0 or not set,the message window will not be ║ ║ │ │ closed automatically.The default selection is indicated as Y or N,like $Y,$N,$C,$1($O),$O, ║ ║ │ │ $2($C),$3($A),$A,$4($R),$R,$5($I),$I,$6($Y),$7($N).A minus will not display the counting. ║ ║ │ │■MESS-bin or "MESS*" indicates the concurrent call enabling the message window to be ║ ║ │ │ simutaneously operated together with its parent window.The next command cannot be executed ║ ║ │ │ before it is closed. ║ ║ │ │■MESS-bg or MESS indicates the backstage call.The subsequent commands will be continued but ║ ║ │ │ some time-consuming operations will still be blocked. ║ ║ │ │■MESS-tbin or "MESS~" indicates backstage call.The subsequent commands will be continued ║ ║ │ │ and some time-consuming operations will not be blocked.It can be used for debugging. ║ ║ │ │■"MESS=" indicates the blocked call.The whole message loop will be blocked ║ ║ │ │ (applicable to soem special debugging). ║ ║ │ │■"MESS" indicates the blocked call.The whole message loop will not be blocked. ║ ║ │ │■Number after +icon:0~7.No number,no icon.0:bang/1:warning,2:information/3:asterisk, ║ ║ │ │ 4:problem,5:stop/6:error/7:waved stop. ║ ║ │ │ >=32 or led by * indicates being user-defined,corresponding to the number of IconGroup. ║ ║ │ │ Icons can be added on one's own.102 indicates a green checkmark.+icon**DLLEXE File#Number ║ ║ │ │ is also practicable. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MESS Insufficient physical memory,\n Set virtual memory? @Set virtual memory #YN *10000 $N ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼User's selection to the message window will be stored in the variable %YESNO%,%&YESNO%. ║ ║ │ │ If [Y] is selected,its value will be YES,and NO for [N].If the window is closed overtime, ║ ║ │ │ the default selection will be returned.The command of FIND is applicable to judging the ║ ║ │ │ value of this environment variable. ║ ║ │ │ Other returned value includes OK,CANCEL,RETRY,IGNORE and ABORT. ║ ║ │ │☼If the param of default selection is left out from the message window of "YN" type,the ║ ║ │ │ returned value after the window automatically closes will be NO.For the convenience of ║ ║ │ │ debugging,all params can be absent. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MOUN' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MOUN[-svr] [-u] [!][WimPath],,[ImgID],[WimTempDir] //-u:to support WimPath ║ ║ │ │MOUN -query VarName[=rw][,MountDestDir][,WimPath] ║ ║ │ │MOUN-udm ⌠sync⌡ [-ud|-uh|-muh[g]] [-u+] [-udfs] [-udm-] [-w] [-m] [-mall] [-mhide[1]] ║ ║ │ │ [-findboot[Only][: RetVarName2]] [-CurDrv[R][+]] [-onlys] [-ud[m]id: UDxID] [-mnorhide] ║ ║ │ │ [-udmask: Mask] [-check[-]] [-ret: RetVarName] [-udimg:File] [-mh: ] ║ ║ │ │ [-mw[-]] [-opt[s]:imdisk params] [-CheckFile: FilePath] DevName [DrvChars] ║ ║ │ │MOUN-udm upud -ret: &&V -udmask: Attr DevName UDName Off(B) Len(B,>4G allowed) ║ ║ │ │MOUN-udm listudm -ret:RetVarName [-norm[-]] [-udfs [-udmask:flagMask]] [-u+[pre]] [-vhd] ║ ║ │ │ DeviceName [MultiUDWildcard] ║ ║ │ │MOUN-udm listud -ret:RetVarName [-udmask: flagMask] DeviceName [MultiWildcard] //to return ║ ║ │ │ the detailed UD file list. ║ ║ │ │MOUN-udm findboot -ret:RetVarName //to find boot device,return:DiskNum UDMNum Type RawInf ║ ║ │ │MOUN-udm findudm [-img] [-norm] -ret:RetVarName DrvChr //to find corresponding UDM, ║ ║ │ │ return:DiskNum UDMNum DrvChr Type ║ ║ │ │MOUN-udm setboot -ret:RetVarName BootMenu [[#udmNum]] [Type] [AutoMntDrv] ║ ║ │ │ //to set windows boot menu, Auto Mount ║ ║ │ │MOUN-udm ud2fs [-efi] DevName [bClr=1] [bMkNew=1] [FS=FAT] [sz1:sz2...[:*]] //UDExt to FS ║ ║ │ │MOUN-udm mapsub [-check] [-CheckFile[+]:Fn] [-tag[+]:Fn] [-ret:RetName] [-r] FileName DrvChr ║ ║ │ │ //w-mount file on RO UDm ║ ║ │ │MOUN-vhd [-c[x] -d -u -r] [-s:SectSize] VHDPath,[MountPath|Size|Parent],[ID],[RetName][,AppP ║ ║ │ │ eVar] //-c[x]:Create[VHDX] -r:RO -d:Dynamic AppPeVar:Unmount once out of variable range ║ ║ │ │ // or the process exits. -iso:ISO ║ ║ │ │MOUN-vhd -query [-r] VHDPath,InOutPEVar[,RetBytesPEVar][,Cmd]//GET_VIRTUAL_DISK_INFO 8B:CMD ║ ║ │ │MOUN-udm OnlyApp [-noauto] //to check and run single application like one-key ghost. ║ ║ │ │MOUN-udm SetOnlyApp <-udm:DiskNum [-desc:Note] -bioscmd:biosBootCMD" "-eficmd:efiBootCMD" ║ ║ │ │ -efimenu:EFIMenu -biosmenu:BIOSMenu]|BootMenu> Type Func APP AppDisk AppPt bShutdown ║ ║ │ │ OpDisk OpPt pt_sn SrcDsk SrcPt SrcPath [WimName FSType FSLable PBR BootDsk BootPt ║ ║ │ │ grldr WimZx0 HvDesc] ║ ║ │ │MOUN-udm setbootcfg BootMenuFile "Val" [LeadTag] ║ ║ │ │MOUN-udm getbootcfg RetName LeadTag ║ ║ │ │MOUN-udm Server [-FreshDriver[+|Only] -quit|-tips- -qfree[a|-] -safe -replace] //AuMounSvr ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To mount a certain image in WIM to a specified directory or unmount the mounted one. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■WimFileName:Microsoft Windows Imaging Format (WIM) File of WIM format. ║ ║ │ │■MountDestDir:directory to mount WIM to. ║ ║ │ │■WimImgID:ImgID in WIM,indicated as a number.It can be absent if the image file is mounted ║ ║ │ │ read-only or ImgID is 1. ║ ║MOUN│ │■WimTmpWorkDir:When WimFltr temporary working directory is set,the image file is mounted ║ ║ │ │ read-and-write.It is suggested setting the directory to the hard disk.* refers to the ║ ║ │ │ system temporary directory. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │■-query:query mode.VarName:to return the outcome. -u:to unmount. MOUN-svr:Valid on Logout ║ ║ │ │■=rw:to return the RW mark only(1/0). ║ ║ │ │■MountDestDir:the directory to query.If absent,all will be queried(in multiline string). ║ ║ │ │■-dll WIMDLL-PATH: ║ ║ │ │■-onlys:to mount by soft-only ignorant of the partition table; -mhide:to mount a partition ║ ║ │ │ unrecogniezed by windows; -mall:to mount all UDm partitions; -m:many times; ║ ║ │ │ -ud or -u:soft unmount; -uh:to remove the drive letter from the partition table; ║ ║ │ │ -muh:-uh first then mount,unmount soft CDROM intelligently(g:by force); -u+:to support U+. ║ ║ │ │ -cleartmp[only]:to clear the temporary partition item for UEFI; -udfs:to support UD; ║ ║ │ │ -udm listudm -ret RetVarName DeviceName:to list UDm partitions; ║ ║ │ │ -udm sync "DrvLetterList" //to flush data to the memory bank; -udm-:not to operate UDm, ║ ║ │ │ the mask can be *. -mh:partition talble method; ║ ║ │ │ -udimg:many times; flagMask:0x20000:UD extension,0x40000:only UD extension,0x80000:to ║ ║ │ │ check UD extension. ║ ║ │ │ -ainf:variable name for the cache of the partition table; ║ ║ │ │ -nbrd[-]:not broadcast [or broadcast] the drive letter; ║ ║ │ │ -opt[s]:can be used many times -opts:helps MOUN to rid the params of the quotes. ║ ║ │ │ -CheckFile:FileNameForValid:can be used many times: list or mount only if there is one. ║ ║ │ │ -CheckFile+:FileNameForValid:can be used many times: list or mount only if there are all. ║ ║ │ │ -CheckVol[R]: Volume: can be used many times: list or mount only if there is one. R:By SED ║ ║ │ │ -CheckUuid[R]: UUID: can be used many times: list or mount only if there is one. R:By SED ║ ║ │ │ -CheckPtType: Type: can be used many times: list or mount only if there is one. ║ ║ │ │ -tag:FileNameForValid:can be used many times: mount if there is one. ║ ║ │ │ -tag+:FileNameForValid:can be used many times: mount if there are all. ║ ║ │ │ -check[-]:not to mount invalid file sytem[or not] ║ ║ │ │ -udmid:pt#PhyPartitionNo:Mount partition with imdisk(Read only by default). ║ ║ │ │ -udmdev:"TypeID:DevID:UDMNum":to specify the device and UDm to mount,or else not to mount. ║ ║ │ │ If TypeID is DevID,the following is DevID of the disk; If TypeID is devsg,the following ║ ║ │ │ is disk signature. ║ ║ │ │ -mnorhide:to mount normal hidden partition as well. ║ ║ │ │ Type(setboot,findboot,findudm):udm ud u+ pt(normal partition) UDMNum:PT number/ud file ║ ║ │ │ -vhd:fix for VHD ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MOUN %CurDrv%\Outpart\PROGRAMS.WIM,%ProgramFiles%,1 MOUN -udfs -udm- \\.\PhysicalDrive1 R- ║ ║ │ │MOUN *query RW=rw,D:\Y or MOUN *query MSG1,D:\Y or MOUN *query ALL ║ ║ │ │MOUN-udm -mhide \\.\PhysicalDrive* R- or MOUN-udm -u \\.\PhysicalDrive1 ║ ║ │ │or MOUN-udm -u "" R ║ ║ │ │MOUN-udfs -udm- -mall -udimg: *.img -udimg: *.iso -udmask: 0xA0001 \\.\PhysicalDrive1 R- ║ ║ │ │MOUN-udfs -udm- -udmask: 0x60000 \\.\PhysicalDrive1 R- //only UD extension. ║ ║ │ │MOUN-udm -mall -mhide1 \\.\PhysicalDrive%&hd% R- //only UDm ║ ║ │ │MOUN-udm -udm- -u+ -mall -mhide1 \\.\PhysicalDrive%&hd% R- //only U+ ║ ║ │ │MOUN-udm -udm- -mall -mhide1 -udfs -udimg: EFI*.IMG \\.\PhysicalDrive1 R- //only UD ║ ║ │ │MOUN-vhd -c D:\A3.VHD,20M MOUN -vhd D:\A3.VHD,B: ║ ║ │ │MOUN-udm SetOnlyApp -reboot -udm:1 "-bioscmd:chainloader /WAIPE/PEXPWIM.BIN" ║ ║ │ │ "-eficmd:chainloader /EFI/boot/boot${arch0}.efi" "-desc:NiHao" -biosmenu:/WAIPE/PEW ║ ║ │ │ -efimenu:/EFI/microsoft/boot/bcd GHO 1 ?:\ZhiMaKaiMen_ZDHuiFu.NTR ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The name of file and directory supports interpreting environment variables; FBWF should be ║ ║ │ │ behind MOUN when it is used. ║ ║ │ │☼Path beginning with "\" indicates searching all drive letters and partitions (including ║ ║ │ │ the hidden ones) for the file with a specified directory like MOUN \MyPE\OP.WIM,%PF%,1 ║ ║ │ │☼"!" indicates assigning a drive letter to a hidden partition after the WIM in it is ║ ║ │ │ successfully mounted like: MOUN !\MyPE\OP.WIM,%PF%,1 ║ ║ │ │☼Leaving out WimPath indicates unmounting the image.ImgID being non zero indicates saving ║ ║ │ │ the modified contents when the image is unmounted,while 0 not saving. ║ ║ │ │☼The full outcome of query is: ID FLAG "WIM File" "MountDir",In FLAG,the 0x100 bit is RW. ║ ║ │ │☼MountDestDir is created automatically.If a read-only file is mounted,the mounting will be ║ ║ │ │ automatically converted to the read-only mode. ║ ║ │ │☼Inner IMDISK needs cabinet.DLL. ║ ║ │ │☼Driver auto mount to can be stored in HKLM\SOFTWARE\PELOGON\USRCFG\AutoUDmMount.DriverTo. ║ ║ │ │ Can set it at the begin of PECMD.INI. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'MSTR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│MSTR [*] VarName=Pos,Length,Str ║ ║ │ 2 │MSTR[*$] [*] [-xq] [-left] VarName1,VarName2...,VarNamen=<[~]StrID1[-]>...<[~]StrID2[-]>Str ║ ║ │ 3 │MSTR[*$] [*] [-xq] [-left] VarName1,VarName2...,VarNamen=<[~]StrID1*>Str ║ ║ │ 4 │MSTR[*$] [*] [-rq[1]] [-trim[p][left|right]] VarName=Str //to remove [prepositive] white ║ ║ │ │ space character at head and end,$:only space. ║ ║ │ │*:only TAB,-delims:UNICODE delimiters to specify a special delimiter; -xq indicates \" can ║ ║ │ │be contained in the string; -rq:to romove ""; -rq1:to contain the single ". ║ ║ │ │-term:UNICODE delimiters left. StrID # Returns StrNum -1 add double quotes on spcae ║ ║ │ │-trim*+[+] -rq*+[+] trime before[after] oprating for -trim -trimleft -trimright -rq -rq1. ║ ║ │ │-trimp:Pretreatment. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To cut out a string of specified length from a specified position in a specified "Str" ║ ║ │ │towards the right and return the outcome to a specified variable.* indicates a VarName ║ ║ │ │behind. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the outcome of the command; ║ ║ │ │■Str:the source string,length unlimited; ║ ║MSTR│ │■Pos:number,to specify the starting position of the source string; ║ ║ │ │■Length:number,to specify the length for cutting out; ║ ║ │ │■StrID:ID>=1,to return the string according to the ID number.Strings are defined by space ║ ║ │ │ or ".The pair of <> should not be left out.~ indicates removing the outermost pair of ". ║ ║ │ │ * behind MSTR indicates separating with TAB; $ separating with space.-left:to retain null ║ ║ │ │ characters at the very beginning of the string.(the TAB mode by default) ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│MSTR aStr=2,4,1234567890 or MSTR aStr=<~2>1 "a b c" 3 or MSTR aStr=-2,4,1234567890 ║ ║ │ │MSTR a,b,c,d=<4><3><5><2>1111 222 333 444 555 666 ║ ║ │ │MSTR a,b,c,d=<2*>1111 222 333 444 555 666 or MSTR a=<1>"PROG \"%L%\" " 1234 ║ ║ │ │MSTR Q1,Q5,Q6,Q6x=<1><5-><6><6->%vSTR% MSTR Q1,Q5,Q6=<1-><5-><6>%vSTR% //mixed ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │MODL│1.The value of a varible(or a certain line of the text)like 5555 66 uuty 00 pp ww ║ ║ │ │ is broken by one or more spaces(the number of spaces is uncertain,but one at least)into ║ ║ │ │ several sections,the lengths of which are also uncertain. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ENVI &STRING=5555 66 uuty 00 pp ww ║ ║ │ │MSTR V3=<3>5555 66 uuty 00 pp ww ///uuty ║ ║ │ │MESS V3=[%V3%]@#OK ║ ║ │ │MSTR V3=<3>%&STRING% ///uuty ║ ║ │ │MSTR V_3=<-3>5555 66 uuty 00 pp ww ///00 ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │2.HELP LAMBDA to separate the param automatically //LAMBDA code pattern of the model ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ENVI &&V3= ║ ║ │ │[]5555 66 uuty 00 pp ww{ ENVI &V3=%3} ///no null characters before },or it will be ║ ║ │ │ treated as part of &V3 MESS V3=[%&V3%]@#OK ║ ║ │ │[]5555 66 uuty 00 pp ww{ TEAM ENVI &V3=%3| } ///There are null characters before }, ║ ║ │ │ and | is the end of &V3. ║ ║ │ │MESS V3=[%&V3%]@#OK ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │3.HELP _SUB function to separate the param automatically //_SUB code pattern of the model ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │_SUB GETV3 ║ ║ │ │ ENVI &V3=%3 ║ ║ │ │_END ║ ║ │ │ENVI &&V3=GETV3 5555 66 uuty 00 pp ww ///uuty ║ ║ │ │MESS V3=[%&V3%]@#OK ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If "Pos"<0,the cutting out will be processed starting from the tail in reverse order; ║ ║ │ │ If "Length"<=0,real_length = total_length_of_real_surplus - absolute value of "Length" ║ ║ │ │☼If "Pos"=0,it will be treated as 1,and if "Length" <1 or exceeds the length of the source ║ ║ │ │ string,all characters behind the starting position will be returned; ║ ║ │ │☼This command will treat strings in Unicode.So the returned value of example 1 is 2345,and ║ ║ │ │ example 2 a b c. ║ ║ │ │☼In format 2,the variables in VarName list will be assigned respectively according to the ║ ║ │ │ positions in StrID list. ║ ║ │ │☼Format 3 is a simplized form of format 2 to get a successive list of StrID. ║ ║ │ │☼Format 4 indicates assigning the whole part starting from the StrID to VarName. ║ ║ │ │☼Fortmat234 all support cutting out characters in reverse order.-1 indicates the last one. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'NAME' 'FNAM' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│NAME [-ext] <=> ║ ║ │ │FNAM [-ext] <=> ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNX│To return the basic name of a file(without directory or extension); -ext:to retain extension ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║FNAM│PARA│■VarName:to store the main file name; ║ ║NAME│ │■FileName:a valid file name. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│NAME fNam=C:\Windows\System32\calc.exe or NAME aExt=X:\Path1\Path2\FileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The outcome of example 1 is "calc",and example 2 is FileName; ║ ║ │ │☼The returned value of FDIR,FDRV and FEXT can be checked or compared by the command of FIND ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'NTPC' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│NTPC [-q|-qo] [server][,name] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To obtain and synchronize time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║NTPC│PARA│■-q:to synchronize and query,-qo:to query only,and save the outcome to the variable name. ║ ║ │ │ No -q or -qo indicates synchronizing only.No server indicates obtaining the default time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│NTPC -q ,CurrentTime ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'NUMK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│NUMK ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To control the switch for the numeric keyboard. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║NUMK│PARA│■If Num is 0, the switch is off,and 1 on. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│NUMK 1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The existing command of SEND can fulfill the same function,yet not quite precisely.When NUMK ║ ║ │ │is on,sending the key once more will reset the switch at off. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PAGE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PAGE [*force] [Max] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the page file(vitual memory). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■Use the format of DOS 8.3 to specify a path to the page file,like "C:\PageFile.sys". ║ ║ │ │ The unit of InitSize and Max is MB; If Max is absent,Max will be automatically set the ║ ║ │ │ same as InitSize. ║ ║PAGE├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PAGE C:\PAGEFILE.SYS 128 256 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If a page file is set,this partition cannot be formatted. ║ ║ │ │☼If the memory available > InitSize,this command will not set a page file,ie,the defined ║ ║ │ │ InitSize can be used as the condition for setting a page file. ║ ║ │ │☼This command will intelligently search for the qualified(hard disk and capacity) partition ║ ║ │ │ to set the page file starting from the one containing the defined name of the page file ║ ║ │ │ (including the drive letter) to avoid those slow u disk or removable hard disk.If the ║ ║ │ │ system starts up from u disk or removable hard disk,the page file defined in the config ║ ║ │ │ file is likely to be right in them.After a round of search,only if no qualified hard disk ║ ║ │ │ partition is found will the u disk or removable hard disk be employed to set the page file ║ ║ │ │ *force:to disable the function in REM2 and REM3. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PART' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PART [-gui][-usb][-fs][-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw] ║ ║ │ │ [-swap:id] [-CHS=C:H:S] [del/init] [-img=[*Off*SZ*]FileName|Disk]#Part [a|-a] type ║ ║ │ │ [[-]start [len]] ║ ║ │ │PART -gpt [-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw] [-cmp] ║ ║ │ │ [del/init] [Disk]#[+]Part -|typeguid -|start -|len|@FinalSectorAddr guid -|Attr -|Name ║ ║ │ │PART update [Disk] ║ ║ │ │PART [-ahup] hupdate[f] [Disk] //to flush the disk. f:power mode(rebuild disk id) ║ ║ │ │PART [-devid[x]] list [Disk],VarName //-devid:to return disk DEVID; ║ ║ │ │ -devidx:to return physical ID. ║ ║ │ │PART [-hextp] [-phy] [-phy#] [-fill] list part [Disk[#Part]],VarName ║ ║ │ │PART [-hextp] [-fill] [-raw] [-cdrom] list drv DrvLetter,VarName ║ ║ │ │PART -raw list drv DrvLetter,VarName //DevNo. Part DrvType Bus Drv MideaType ║ ║ │ │PART [-drv] list volume [disk:Part|Drv],VarName //List:Volume Dev Part DevTp PartTp Off Len ║ ║ │ │PART [-cdrom|-floppy] list parent ,VarName ║ ║ │ │PART [-cdrom] list dep ,VarName //query source file ║ ║ │ │PART /mbr[=nt6|=win|=nt5|=dos|=[*LenLimit*]FileName] [-img=FileName|Disk] ║ ║ │ │PART [-phy] /pbr[=nt6[fat]|=win[fat]|=nt5[fat]|=dos|=[*LenLimit*]FileName] ║ ║ │ │ [-img=FileName|Disk]#Part //fat refer to the file systems of FAT/FAT32/ExFAT ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create,delete,modify,hide and list partitions. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ѺIn the safe mode by default,this command will only operate the generally unused main ║ ║ │ │ partition 3 or 4 excluding the extended partitions. ║ ║ │ │-gui:graphic mode; -usb:to list USB disk only; [-report[: RetVarName][ DiskNo]]to display or ║ ║ │ │ output the list, ignorant of other params. -mount-:not show label with no drive letter ║ ║ │ │-admin:advanced mode(dangerous),capabile of operating partition 1 and 2; ║ ║ │ │-super:super mode(rather dangerous):capabile of operating the extended partition; ║ ║ │ │-align:start aligned,cylinder aligned by default,followed by =64K,=128K,=512K,=1M etc; ║ ║ │ │-alignend:end aligned,-align by default,followed by =64K,=128K,=512K,=1M etc. ║ ║ │ │-clear:to clear the valid information in the partition by force; -raw:not to make any ║ ║ │ │ ajustment to start/len,or to return (Dev# Part# Type Bus). ║ ║ │ │-[x]up: After the disk is updated,the partition table will be updated to the OS,x to enhance ║ ║ │ │-hup:to flush the removable disk; -ahup:to flush the disk; -iv=n:to extract the item n#. ║ ║ │ │-fs: The "unformatted" message window will not pop up for a newly-created partition. ║ ║ │ │C:H:S indicates HeadsPerCylinder:SectorsPerHead:SectorSize ║ ║ │ │Disk:from hd0 to hdN,hd0 by default,the leading character hd can be absent for this type. ║ ║ │ │Part:1~4.indicating the physical ID for the 4 main partition items in the partition table. ║ ║ │ │ It is settled and different from the logical ID used for mounting,which is not settled. ║ ║ │ │ If the partition table is null or it is an extended partition,there will be no ID for ║ ║ │ │ operating(creating)it; If the preceding partition becomes null,the ID number will be ║ ║ │ │ subtracted by one.If the position and length of the partition are different from the ║ ║ │ │ original ones,only after the partition is hidden or deleted can the partition item be ║ ║ │ │ modified.See appendix. ║ ║ │ │ +L:to add a logical partition at the end of the extended partition. ║ ║ │ │ -L:to delete the last logical partition of the extended partition. ║ ║ │ │ If the partition ID is the physical ID for the logical partition(>=5),it is practicable ║ ║ │ │ to modify its activation,type,start and length. ║ ║ │ │[a|-a]: a indicates activation; -a:to remove the activation,otherwise it remains unchanged. ║ ║ │ │type:The type of a partition,0~255.0:hidden totally,unrecognized by partition tools and OS. ║ ║ │ │ If the partition is assigned with a new type,the partition can be put in use right away ║ ║ │ │ .If <0 or absent,it remains unchanged. Disk,Part,type,start and len can be in hex. ║ ║PART│ │start:the starting position on the disk.The starting byte of the disk is 0.The disk capacity ║ ║ │ │ is the multiple of 512 bytes(automatically contracted and aligned internally). ║ ║ │ │ It can be 0.If <0 or absent,it remains unchanged.- indicates figuring out the end of ║ ║ │ │ the last partition using "list",and any ajustment to the alignment of the end will not ║ ║ │ │ have an effect on "len".For a logical partition,the suffix + can be added indicating ║ ║ │ │ skipping a certain length. ║ ║ │ │len: It can be 0.If <0 or absent,it remains unchanged.Start_0/len can be followed by the ║ ║ │ │ unit suffix TGMKS.K:1024 bytes,S:512 bytes. ║ ║ │ │del: to delete the partition thoroughly. ║ ║ │ │ The command to delete is: PART del [Disk]#Part or PART [Disk]#Part -a 0 0 0 ║ ║ │ │init:to initialize the GPT/MBR partition. ║ ║ │ │fix:to fix GPT partition Table (checksum,flag). ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │[x]update [-axup] [Disk]:to update the partition table to OS,x to enhance.Disk 0 by default. ║ ║ │ │hupdate [-ahup] [-up] [Disk]:to hard-flush the partition table(to u disk).Disk 0 by default. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │list disk:to list all the partitions if Disk is absent.If present,to return such information ║ ║ │ │ of the disk as:DiskID,Size,CylinNum,HeadNum,SetorNum,SectorSize,MediaType, ║ ║ │ │ Sign(Hex),BusType,PartType,RemvFixDisk. ║ ║ │ │list part:[Disk] hd0 by default,to list all the partitions if Part is absent(-:null,@: ║ ║ │ │ extended partition).If present,to return such information of this partition as: ║ ║ │ │ PartID,Type,BootMark,BaseOffset,Size,HideSectorNum,End,DrvLetter. ║ ║ │ │ -hextp:type of hex 0xNN. -phy:partition in physical ID,4 main partitions 1-4,and ║ ║ │ │ logical partitions 5-N.-phy#:to export physical ID. ║ ║ │ │ -fill:There is a placeholder * if no drive letter is assigned. ║ ║ │ │ The partition information of GPT is returned as follows: ║ ║ │ │ PartID,TypeGUID,GPT,BaseOffset,Size,Attr,PartGUID ║ ║ │ │list drv: The drive letter in the outcome of this command is basically the same as the one ║ ║ │ │ of "list part",except that a disk ID is added at the end of its outcome. ║ ║ │ │VarName: to return the outcome of query. ║ ║ │ ├────────────────────────────────────────────GPT──────────────────────────────────────────────╢ ║ │ │"MS Basic Data" partition by default,Attr:0.+ before "Part" indicates the insertion mode,the ║ ║ │ │original partition is moved backwards once.Physical ID:1~128. ║ ║ │ │-cmp:to compress the null item in the partition table(otherwise unrecognized by DG yet its ║ ║ │ │use is not affected). ║ ║ │ │Attr: ║ ║ │ │0x1000000000000000:Read-only 0x2000000000000000:shadow 0x4000000000000000:hide ║ ║ │ │0x8000000000000000:no drive letter 0x0000000000000001:dispensable partition in PC ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │/mbr:to rewrite MBR,nt6(win) by default.FileName can be specified.The file cannot be too ║ ║ │ │large.FileName beginning with # indicates the resource number in EXEDATA. ║ ║ │ │LenLimit refers to the utmost necessary length to read from the front of the file.The second ║ ║ │ │* can be absent if there is no confusion,for example,if there exists #. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │/pbr:to rewrite PBR,nt6(win) by default.FileName can be specified.The file cannot be too ║ ║ │ │large.FileName beginning with # indicates the resource number in EXEDATA. ║ ║ │ │LenLimit refers to the utmost necessary length to read from the front of the file.The second ║ ║ │ │* can be absent if there is no confusion,for example,if there exists #. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PART 1 //to fix the valid mark for the partition table in disk 1. ║ ║ │ │PART 1#3 a //1#3 to activate the partition. ║ ║ │ │PART 1#3 -a //1#3 to cancel the activation of the partition. ║ ║ │ │PART 1#3 0x17 1048576000 2097152000 //100M+200M partition 1#3,hidden NTFS. ║ ║ │ │PART 1#3 0x17 //to hide 1#3 partition. ║ ║ │ │PART 1#3 0x7 //unhide 1#3 partition. ║ ║ │ │PART 1#3 -a 0 //to hide completely,unrecognized by other partition tools or OS. ║ ║ │ │PART 1#3 -1 -1 1048576000 //to ajust to 100M,it is actually needed to contract the size of ║ ║ │ │ the file system first or enlarge it afterwards. ║ ║ │ │ (eg:1.To ajust from 100M to 50M:1)contract the size of the file system first; ║ ║ │ │ 2)contract the size of the partition using Part. ║ ║ │ │ 2.To ajust from 50M to 100M:1)enlarge the size of the partition using Part; ║ ║ │ │ 2)enlarge the size of the file system afterwards.) ║ ║ │ │PART 1#3 -a 0 0 0 //to delete the partition without influence its data,and remapping and ║ ║ │ │ mounting is practicable. ║ ║ │ │PART del 1#3 //to delete the partition,without influence its data,and remapping and ║ ║ │ │ mounting is practicable. ║ ║ │ │PART /MBR=*63s#5 0 //to write resource No.5 in EXEDATA into MBR of disk 0,63 sectors ║ ║ │ │ at most. ║ ║ │ │PART /MBR=*63s*%CurDir%\MBROS.MBR 1 //%CurDir%\MBROS.MBR to write into MBR of Disk 1, ║ ║ │ │ 63 sectors at most. ║ ║ │ │PART 1#5 a 0x7 //to unhide and activate the logical partition 1#5. ║ ║ │ │PART -super -force -clear -up -hup 1#2 -a 5 2.5G 3.5G //to create extended partitions. ║ ║ │ │ -clear:unrecoverable. ║ ║ │ │PART -up 1#+L 0x7 +32256 57544704 //to create a logical partition at the end of the ║ ║ │ │ extended partition ║ ║ │ │PART -up 1#-L //to delete the last logical partition. ║ ║ │ │PART -up -super -gpt -cmp 1#+1 {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7} 1G 5G ║ ║ │ │ {BC65AB2C-B5AF-4197-92B2-00E808FDEE09} 0x9000000000000000 "Basic data partition" ║ ║ │ │PART -up -super -gpt -cmp del 1#2 //to delete the GPT partition without influence its ║ ║ │ │ data and remapping and mounting is practicable. ║ ║ │ │PART -up -super -gpt -cmp 1 //to compress the GPT partition table only,making partition ID ║ ║ │ │ successive starting from 1. ║ ║ │ │PART -super -up -swap:2 3#1 //3#1 swap with 3#2 ║ ║ │ │PART -up -hup -super -force -mbr init 1 //to initialize into MBR; -gpt:into GPT. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Disk operation,belonging to the ones of system level,is very dangerous,so be cautious! ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PATH' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PATH [#|@]DirName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the current working directory for PECMD.EXE,create or delete a directory. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║PATH│PARA│■DirName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PATH %CurDrv%\outpart ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼"@" indicates setting the current directory for PECMD.EXE so that the relative path can be ║ ║ │ │ adopted by the commands of EXEC,DEVI and so on to shorten the length of the command line. ║ ║ │ │☼"#" indicates deleting a directory.Notice that this operation is also likely to delete a ║ ║ │ │ file with the same name. ║ ║ │ │☼If "@" and "#" are absent,PATH is used to create a directory(multilevel). ║ ║ │ │☼Be cautious to use Path with the leading character "@" in a config file,which is likely to ║ ║ │ │ result in disorders. ║ ║ │ │☼If the param is absent,the current default directory of PECMD.EXE(%SystemRoot%\SYSTEM32) ║ ║ │ │ will be restored. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PBAR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PBAR [*] [-smooth] ,,[PrgBarPrg][,[#Color:]Txt] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a progress bar in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being recycled before quitting the block or function. ║ ║ │ │■PrgBarName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■PrgBarShape:the position and size of the progress bar.The format is:.L,T,W and H are respectively followed by corresponding numbers. ║ ║PBAR│ │■PrgBarPrg:float(1~100),to initialize the progressive percentage of the progress bar,0 by ║ ║ │ │ default. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PBAR Pbar1,L360T11W428H16,0 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼PBAR is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼To set the progress and text of the progress bar,use "ENVI @PrgBarName=Prg[;[#color:]Txt]" ║ ║ │ │ See ENVI; If the value is set as -1,the progress bar will be hidden and numbers >100 will ║ ║ │ │ be ignored. ║ ║ │ │☼Use "ENVI @PrgBarName.Visible=Num" to set its visibility.0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @PrgBarName.color=color" to set the color of text. ║ ║ │ │☼Use "ENVI @PrgBarName.percent=[-]smooth" to switch to the smooth mode. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PCIP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PCIP [IPAddr],[SubnetMask],[DeftGtway],[DNSAddr],[NetcardSN|NetcardName][,NetcardStat] ║ ║ │ │ //static IP ║ ║ │ │PCIP -,[-],[-],[DNSAddr],[NetcardSN|NetcardName][,NetcardStat] //dynamic IP ║ ║ │ │PCIP ?[*][IPName],[SubnetName],[GtwayName],[DNSName],[NetcardSN][?][NetNameName][,MACName] ║ ║ │ │ [,LinkName][,DHCPName][,bDHCP][,Status][,Media][,Desc][,Type] //to query. *:Real val ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the IP address for the computer.Format 1 for static IP(all param cannot be absent); ║ ║ │ │Format 2 for dynamic IP(DNS can be specified). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │☼PICP should be closely followed by params: *safe:conserved version; *qk:version quicker ║ ║ │ │ than NT5.x normal OS; *qkos:quick version(default).The three versions should be used in ║ ║ │ │ coordination. *fresh:to refresh by force(default),*nfresh:not to refresh.*sfsw:to switch ║ ║ │ │ from NT5.x DHCP to static IP,reliable but slower.*all:all netcards,otherwise ethernet and ║ ║ │ │ wireless net.*cah: &CacheName ║ ║ │PARA│■IPAddr:string in the form of IP indicating the IP address of net,being absent indicates ║ ║ │ │ not modifying the IP address,"-" indicates automatically obtaining the IP address; ║ ║ │ │■SubnetMask:string in the form of IP indicating the mask for subnet.Being absent indicates ║ ║ │ │ not modifying the subnet mask.IP being "-" indicates automatically obtaining the subnet ║ ║ │ │ mask.Multi-IP and multi-mask are supported,separated by "; ",":" or "&".Multi-IP should ║ ║ │ │ be corresponding to multi-mask.See examples. ║ ║ │ │■DeftGtway:string in the form of IP indicates the gateway address.Being absent indicates ║ ║ │ │ not modifying it.IP being "-" indicates automatically obtaining the gateway address. ║ ║ │ │■DNSAddr:string in the form of IP indicates the DNS address.The preferential DNS and spare ║ ║ │ │ DNS are linked with"; ", "&" or ":".Being absent indicates not modifying the DNS address. ║ ║PCIP│ │ "-" means automatically obtaining the address of the DNS server. ',' should be transfered ║ ║ │ │ to a variable.If IP,SubnetMask,DeftGtway and DNS are 0.0.0.0,it indicates 0 clearing,used ║ ║ │ │ in the first setting. ║ ║ │ │■NetcardSN:number,can be absent,default 0 means the first netcard,1 the second,2 the third ║ ║ │ │ and the like; ║ ║ │ │■NetcardName:to be queried beneath {D8D9826A-332E-4858-9306-374EC20A9F05} ║ ║ │ │ HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}, ║ ║ │ │ It also can be netcard description like Intel 8255x-based PCI Ethernet Adapter (10/100), ║ ║ │ │ MAC address,like 00-00-3D-46-34-D7 or 00:00:3D:46:34:D7 and "=LinkName" like =local link. ║ ║ │ │■NetcardStat:number,used for operating the serviceability of the netcard.0:disabled, ║ ║ │ │ 1:enabled,fresh:disabled and enabled.Absent,no operation to it. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PCIP 192.168.1.2,255.255.255.0,192.168.1.1,192.168.1.1 or PCIP -,-,-,-,, ║ ║ │ │PCIP ,,,192.168.1.1;10.2.22.1,,1 or PCIP ,,,,,1 //to enable the netcard or ║ ║ │ │PCIP ,,,,,0 //to disable the netcard. ║ ║ │ │PCIP ? IP,MASK,GW,DNS,0?NAME,MAC,LINK //multi IP multi DNS,separated by space or ║ ║ │ │PCIP *fresh //to refresh. ║ ║ │ │PCIP 192.168.1.2;192.168.2.2,255.255.255.0;255.255.255.0,192.168.1.1,192.168.1.1 //multi IP ║ ║ │ │PCIP 192.168.1.2,255.255.255.0,0.0.0.0,0.0.0.0 //set GW,DNS as 0.0.0.0 anyway. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command may be ineffective if the netcard driver is not installed,the netcard is ║ ║ │ │ disabled or the OS does not support the network; ║ ║ │ │☼This command contains many params,as are usually applied in example 1(no enabling ║ ║ │ │ operation when IP for the first netcard is set) or in example 2(to automatically obtain IP ║ ║ │ │ and DNS). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PINT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PINT [-TaskBand|-StartMenu] [*MenuDLLFileName,],[MenuName|MenuID|#StrID] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To pin EXE or LNK file to "StartMenu" or "TaskBar".For NT5.x OS,only "StartMenu" is ║ ║ │ │supported. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■FileName:the name of EXE and LNK files,containing its path and extension,supportive of ║ ║ │ │ environment variables interpretation; ║ ║ │ │■MenuName:string corresponding to the right click menu of EXE and LNK file,like "pinned to ║ ║ │ │ StartMenu(&U)" and "locked to TaskBar(&K)"; ║ ║ │ │ It is suggested only keeping the front part without the hotkey mark "U)"; ║ ║ │ │■MenuID:like "[-]StartMenu" or "TaskBar",the former indicates being pinned to "StartMenu" ║ ║ │ │ and the latter "TaskBar".[-]:to separate; ║ ║ │ │■StrID:number,the resource string ID in SHELL32.DLL for "pinned to StartMenu" and "locked ║ ║ │ │ to TaskBar".#5382:to separate from "StartMenu". ║ ║PINT├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PINT %SystemRoot%\Regedit.EXE,StartMenu or PINT %SystemRoot%\Regedit.LNK,pinned to StartMenu ║ ║ │ │PINT %SystemRoot%\Regedit.EXE,TaskBar or PINT %SystemRoot%\Regedit.LNK,locked to TaskBar(&K) ║ ║ │ │PINT %WinDir%\System32\calc.exe,#5381 or PINT %WinDir%\System32\calc.LNK,#5386 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command should be supported by the system function.In some simplified OS,XP and 2003 ║ ║ │ │ OS,it is likely that the command cannot fulfill its function because of the simplification ║ ║ │ │ or defficiency of related system function; ║ ║ │ │☼Only one of the three params "MenuName","MenuLabel" and "StrID" is employed.If all absent, ║ ║ │ │ it indicates pinning to "StartMenu".The three params vary with systems.It is suggested ║ ║ │ │ being indicated as "MenuName" of the system(like "pinned to StartMenu(&U)); ║ ║ │ │☼Other items of the system right click menu can be theoretically applied to "MenuName" to ║ ║ │ │ fulfill some functions,like using "Open(&O)" to open files. ║ ║ │ │☼For win10,if pecmd is copied to its path.Dir\Exporer.exe,it will be put into use.Or else ║ ║ │ │ if there exists no such non-zero dword key as HKLM\SoftWare\PELONGON\USRCF\NOTMPEXPLORER, ║ ║ │ │ explorer.exe will be temporarily created and put into use.If there exists no such non-zero ║ ║ │ │ dword key as HKLM\SoftWare\PELONGON\USRCF\NODELAYEXPLORER,explorer.exe will delay its ║ ║ │ │ operation of TaskBand on demand.Such can be configured as the front part of corresponding ║ ║ │ │ MenuName of Win10 StartMenu:pecmd path.WIN10FromStartMenu,pecmd path.WIN10ToStartMenu,HKLM ║ ║ │ │ \SoftWare\PELONGON\USRCF\ WIN10FromStartMenu, WIN10ToStartMenu,WIN10FromTaskBand, ║ ║ │ │ WIN10ToTaskBand and PECMD 5381/5382 strings. Can place in path.USRCFG.INI ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'PUTF' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│PUTF[*][.][#] [-16] FileName,[StartPos[#LenLmt]], ║ ║ │ │PUTF -dd [-bs=BS] [-ibs=BS] [-obs=BS] [-count=COUNT] [-len=LEN] [-skip=SKIP] [-skipb=SKIPB] ║ ║ │ │ [-conv=notrunc] [-quick|-qspace] [-va] ,[ExportStartPos],InFileNameOrInt64 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To modify the data of a specified file in BINARY.The suffix # means source is a PE Var, with ║ ║ │ │ two extra bytes of zero permitted to be written in at most. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■FileName:the existing file name,supporting environment variables interpretation; -16:data ║ ║ │ │ queque in hex. -v: Write PE_VAR ║ ║ │ │■StartPos:number,a starting position relative to the base address of the file,hex supported ║ ║ │ │ ,like 0x100; It starts from default 0 and can be followed by the suffix TGMKS. ║ ║ │ │ #LenLmt being absent indicates all data. ║ ║PUTF│ │■DataQue:[*ReptFactor] number,the data to write in from the starting position.Numbers are ║ ║ │ │ separated by space,like *1M 0x00 0x23 0xAD *1K 0x1C 128.The internal data ID of the ║ ║ │ │ resource lies beneath "EXEDATA"; "." indicates not automatically extracting. ║ ║ │ ├─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ Format 2 refers to the mode of high speed binary block delivery.BS:the number of bytes in a ║ ║ │ │ block.COUNT:the number of blocks.SKIP:the starting number of blocks of the file to input. ║ ║ │ │ SKIPB:the starting number of bytes of the file to input which can be followed by TGMKS. ║ ║ │ │ FileName is permitted not to be in existence.-conv=notrunc:not to shorten the existing file ║ ║ │ │ The file name to input can be zero,which indicates 0 clearing. ║ ║ │ │ -quick:sparse file.-qspace:to allocate space quickly. -va:not initiated space. ║ ║ │ │ Logical drive A:-Z:, CDROM \\.\CDROM0~N, tape \\.\TAPE0~N, disk \\.\PhysicalDrive0~N, ║ ║ │ │ NUL:a dummy file.LEN:length in number of bytes,prior to COUNT. ║ ║ │ │ -fd=HNNDLE: accelerate output ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│PUTF %CurDir%\Memu.DAT,0x400,0x23 0xAD 0x1C 0x80 0x6F or PUTF* A.DAT,,#100 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The command of PUTF modifies the starting position of the file relative to its base ║ ║ │ │ address in a way of overwriting without changing the length of the file,but the length of ║ ║ │ │ the new file will not be limited.New file as it is,if the specified starting position is > ║ ║ │ │ 1 or far beyond the end of the file,a hole will be left in between(It does not occupy any ║ ║ │ │ space in some advanced file system like NTFS,nor does it have any bad influence); PUTF* ║ ║ │ │ can expand the file.The suffix "." indicates directly writing into a text(ANSI). ║ ║ │ │☼The corresponding command to read a file in BINARY is GETF.LenLmt is only applicable to PE ║ ║ │ │ variable name and internal data ID. ║ ║ │ │☼The command to read or modify a file in string is READ and WRIT. ║ ║ │ │☼The resource can be indicated as:"[FileName]""#RescName[|DirName]".The couple of "" behind ║ ║ │ │ can be absent.RescName can be non number characters at this moment. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ║ ║ │ │☼FileName leading with & is PE_VAR. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RADI' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RADI [-right -center -scale[:[Sz][:Pic]]] [*] Name,Shape,Title,Event,[Status],[GroupID] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a radio in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■RadioName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■RadioShape:the position and size of the radio.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■RaidoTitle:characters on the radio to describe its functions or instructions of the radio. ║ ║ │ │■RadioEvent:command to execute when the radio is clicked,a valid one supported by WinCMD. ║ ║RADI│ │■RadioStatus:number,1 or -1:checked; 0,2 or -2:unchecked; <0:disabled; ±16:invisible. ║ ║ │ │■RadioGroupID:number,0 by default.Raidos can be divided into groups,in which a radio can be ║ ║ │ │ selected out of all without mutual influence among the groups. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RADI RadioButton1,L32T314W100H20,unload WimShExt.DLL,ENVI @Group1=%RadioButton1%,1,1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼RADI is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼To set RadioTitle,use "ENVI @RadioName=RaidoTitle". Refer to ENVI. ║ ║ │ │☼Use "ENVI @RadioName.Check=Num" to set the status of checking.0:unchecked; not 0:checked. ║ ║ │ │☼Use "ENVI @RadioName.Enable=Num" to set its serviceability.0:disabled; not 0:enabled. ║ ║ │ │☼Use "ENVI @RadioName.Visible=Num" to set its visibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @CtrlName.*del=" to delete. -scale:Internal scaling. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RAMD' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RAMD [P percentage of memory] [LMini] [HMax] [FSurplus] <===old format ║ ║ │ │RAMD [,DiskSize][,DiskFormat][,DrvLetter][,DiskVol][,CompMark][,Opt] <===new format ║ ║ │ │RAMD ImDisk*[VarName] [*[Offset]*Size*[Ctrl]*Devi] [--[f]ins [-rmeu-]] -a -t Type -m LodPint ║ ║ │ │ [-n][-o op1[,op2 ...]] [-f|-F SrcFileDeviName][-s Size] [-b Offset] [-v PartID] ║ ║ │ │ [-S SectSz] [-u ImDiskID] [-x 1 TrackSectNum] [-y 1 CylinTrackNum] [-p "format Param"] ║ ║ │ │RAMD ImDisk*[VarName] -e [-s Size] [-o opt1[,opt2 ...]] [-u ImDiskID | -m LoadPoint] ║ ║ │ │RAMD ImDisk*[VarName] -d|-D [-u ImDiskID | -m LoadPoint] ║ ║ │ │RAMD ImDisk* -BD -m Driver [--remove] [--nbrd] <===notify to add/remove driver ║ ║ │ │RAMD ImDisk*[VarName] -l [--id] [-u ImDiskID | -m LoadPoint] <===ImDisk full format ║ ║ │ │RAMD ImDisk* -gui <===ImDisk graphic mode ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNX│To set the size of RamDisk and return the outcome to a variable.[See ImdiskHelp.txt] ║ ║ │ │LoadPoint:driver letter or directory ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║RAMD│PARA│■DrvName:Ramdriv or ImDisk; The unit for both Max and Mini is MB. ║ ║ │ │■DiskSize:The unit is MB,defined with Pxx Lyy Hzz,xx:percentage of available memory, ║ ║ │ │ yy:minimum,zz:maximum; ║ ║ │ │■DiskFormat:supportive of FAT,FAT32 and NTFS.If set,the disk will be formatted according to ║ ║ │ │ the params; If absent,not formatted. ║ ║ │ │■DrvLetter:the drive letter assinged to ImDisk.If the driver of Ramdriv is adopted,it ║ ║ │ │ should be absent together with "DiskVol"; ║ ║ │ │■DiskVol:the volume to set when the disk is formatted with the driver of ImDisk. ║ ║ │ │■CompMark:1:NTFS compression; 0 or null:no compression. ║ ║ │ │■Opt: 0x1 bit:Being 1 indicates physical memory mode,only intended for Imdisk. ║ ║ │ │■Ctrl:0x1 bit:writable.0x10:self-unload upon shutdown.0x20:all self-unload upon shutdown. ║ ║ │ │ 0x40:to disable self-unload. 0x100/0x200:with/without many w-mount for this disk ║ ║ │ │ --nbrd:not to broadcast the drive letter in ImDisk full format. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RAMD P20 L32 H64 ║ ║ │ │RAMD ImDisk,L64,NTFS,B:,ImDisk1[,1,1] or RAMD Ramdriv,P20L32H64 ║ ║ │ │RAMD ImDisk*ret*2097280s*5734529s*0*\\.\PhysicalDrive0 -a -o hd -m Z: //sector mapping ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The three params can be used separately.Eg,when RAMD P10 is used,10% of the memory will be ║ ║ │ │set as RamDisk. ║ ║ │ │☼When Ramdriv is used,the disk will be assigned a drive letter and formatted by the driver ║ ║ │ │ of Ramdriv and When ImDisk is used,by PECMD; ║ ║ │ │☼When the driver for ImDisk is used,this command can be employed to expand a specified ║ ║ │ │ virtual disk like RAMD ImDisk,L128,NTFS,B:,ImDisk2. ║ ║ │ │☼Pxx Lyy Hzz can be used separately.The minimum limited by PECMD is 1M and the maximum is ║ ║ │ │ (2GB for OSx86,32GB for OSx64); ║ ║ │ │☼Mount WIM in the physical memory mode(RAMD ImDisk,L64,NTFS,B:,ImDisk1,,1).For FAT32,the ║ ║ │ │ size of the disk cannot be too small; ║ ║ │ │☼If the command is executed successfully,the environment variable of the process ║ ║ │ │ %CurRamDisk% will return the drive letter,and it can be set as a system one with the ║ ║ │ │ command of ENVI as you need. ║ ║ │ │☼Inner IMDISK needs cabinet.DLL. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RAND' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RAND [VarName] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return a random number. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the random number,RANDOM by default.Practically %RANDOM% works without ║ ║ │ │ using the command of RAND. ║ ║RAND├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RAND CurRand ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The outcome of the example is likely to be "14935321432143". ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'READ' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│READ[-UNICODE|-UNICODEB|-UTF8] [*fix] ,[ReadPos[+LineNum]],[VarName] ║ ║ │ │READ [*fix] [-[*]],,, ║ ║ │ │READ [*fix] --,, ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To read the data of a specified file in string(line).Other code:-GBK -BIG5 -UNI -UNIBE -ANSI ║ ║ │ │-CodeNum ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■FileName:an existing file,supporting environment variables interpretation; *fix:a separate ║ ║ │ │ ENTER is treated as the newline(encrypted BAT/CMD). ║ ║READ│ │■ReadPos:the line ID,<0 indicates reading the number of lines; 0 indicates the last line; ║ ║ │ │ Other numbers indicate reading the specified line,hex numbers supported,1 by default. ║ ║ │ │ * or ** or *r indicates all lines; * indicates the newline serving as the interval; *r ║ ║ │ │ indicates the newline via ENTER as the interval,both of which can be mutually converted. ║ ║ │ │ ** indicates the newline of the primitive content.The number of lines is 1 by default,and ║ ║ │ │ 0 indicates reading to the end. ║ ║ │ │■VarName:a string to store the outcome of reading.READLINE by default. ║ ║ │ │■ContentRead:to read from the content of the multiline string,which is generally obtained ║ ║ │ │ by EXEC* or assembled by ENVI.FileName is - or absent or -* at this time.-* indicates this ║ ║ │ │ being VarName to read(?check code).-UNICODE -UNICODEB -UTF8 are the file encoding,which ║ ║ │ │ can be simplified as -UNI -UNIB.If BOM exists,the encoding is based on BOM. ║ ║ │ │■Format 3:to read from the standard input.Generally,the position is 1 and one line is read ║ ║ │ │ each time. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│READ %CurDir%\Memu.LST,10,CurLine or READ %CurDir%\Memu.LST,0,LastLine ║ ║ │ │READ -,10,Line,%&MSG% or READ -*,10,Line,&MSG ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼READ is only applicable to reading a pure text file like the menu config file.To read the ║ ║ │ │ the primitive content of a file,use the command of GETF. ║ ║ │ │☼Supportive of UD files: ud:UD FileName:UD internal file name. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RECY' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RECY , ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the recycle bin of Windows system,like XP/2003/VISTA/Windows7 and their WinPE system. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■PartID:indicated as a drive letter or "*:\".The drive letter indicates a specified ║ ║ │ │ partition and "*:\" all partitions."\" can be absent. ║ ║RECY│ │■MaxCapacity:number,indicating the maximum space of the recycle bin.In NT5.x system,it is ║ ║ │ │ indicated as a percentage while in NT6.x system as the capacity with a unit of MB; ║ ║ │ │ If it is 0,the recycle bin in the specified partition will be disabled and the deleted ║ ║ │ │ files will not be transfered to the bin. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│NT5.x OS: RECY D:,10 or RECY E:,0 or RECY *:,0 NT6.x OS: RECY C:,2048 or RECY D:\,0 ║ ║ │ │or RECY *:\,0 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼In NT5.x OS,if the MaxCapacity exceeds 30,PECMD will adopt the default 10; In WinPE,it is ║ ║ │ │ suggested putting this command behind INIT. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'REGI' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│REGI [--a[v|k]] [LeadChr]<\SubItem\\>[,TypeVName] ║ ║ │ │REGI [--name] [--0] [--16] [LeadChr]<\SubItem\\>[[KName][Operator] ║ ║ │ │ [[TypeChr]DataVal]] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To read,set or delete the data in registry. --name DataVal is VarName ║ ║ │ │--k:only to create a key --byte:byte stream --v[-]:Not Save(-Not Auto.) --qk:quick ║ ║ │ │--init: Get empty string on fail --a[v|k] List all[Val|SubKey] -su:super-right ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■Leading characters "$","+","#","@","*" or "**" or "*$","~" or "~~" indicate reading ║ ║ │ │ resepctively the data of REG_SZ,REG_DWORD,REG_BINARY,REG_MULTI_SZ and REG_EXPAND_SZ in the ║ ║ │ │ registry.They indicate types of data when writing into the registry. ║ ║ │ │ ~~ indicates reinterpretating the environment variables in the data of the registry. ║ ║ │ │ ** indicates the substring "\0" will be interpreted as "\\0" when reading and *$ refers to ║ ║ │ │ a multiline string,but when writing,the substring "\\0" will be saved as "\0" and *$ ║ ║ │ │ indicates saving the multiline string as parts separated by "\0",a separate line for each. ║ ║ │ │ When reading,there are 2 types:.indicates the arbitrary type and can be followed by ║ ║ │ │ TypeVarName; ? refers to the type of query(NI refers to the unset null value). ║ ║ │ │ "^","+","b","u","n" refer to the type of REG_LINK,REG_QWORD,REG_QWORD_BIG_ENDIAN, ║ ║ │ │ REG_MUI_SZ,REG_NONE,intelligently preposed.--t:numeric type,to directly specify any other ║ ║ │ │ type of data,which is the same as REG_BINARY. ║ ║ │ │■SubItemName:the full name of the registry entry beneath the selected ROOTKEY,also such ║ ║ │ │ form is directly adopted as HKEY_LOCAL_MACHINE. ║ ║ │ │■KeyName:the name of the key to operate.If absent,the default key will be operated.If the ║ ║ │ │ operator is "!" without "=",the whole subitem will be deleted. ║ ║ │ │■VarName:to store the returned value.If there is a comma but no VarName,a default name ║ ║ │ │ RegDat will be adopted.No comma indicates setting or deleting the data of the registry. ║ ║REGI│ │■operator:The operator "!" indicates deleting the whole subitem; The operator "=" without ║ ║ │ │ data indicates deleting; The operator "=" with data indicates setting data. ║ ║ │ │■TypeChar:the type of data.Being absent indicates the type of string."#" refers to the type ║ ║ │ │ of REG_DWORD,like "#0x20"; "@":REG_BINARY,like "@23 34 90 255"."*":REG_MULTI_SZ,like ║ ║ │ │ "*string1\0str2\0\0"."~":REG_EXPAND_SZ,like "~%SystemRoot%\System32".It is strongly ║ ║ │ │ suggested using the leading characters to indicate the type of data to avoid being ║ ║ │ │ confused with a string.Priority is given to the leading characters. ║ ║ │ │■DataVal:Null value of a string is indicated as "".The type of REG_DWORD and REG_BINARY is ║ ║ │ │ supportive of hex numbers.--16 coordinating with @# indicates hex.--0 coordinating with = ║ ║ │ │ indicates creating a null item and coordinating with \! indicates clearing the subitems, ║ ║ │ │ values and default values beneath it; The DataVal can be divided into several subitems ║ ║ │ │ --0:number N,1:to clear the default value,2:to delete all subitems,4:to delete all values. ║ ║ │ │ multiple --0:N is permitted and the numbers can be added up,which means subitems are ║ ║ │ │ combined(like 1+4=5,1+2+4=7,ie,5 indicates the combination of subitem 1 and 4,while 7 of ║ ║ │ │ subitem 1,2 and 4). ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│REGI HKCU\SOFTWARE\PECMD\Version=#1200 , REGI $HKCR\lnkfile\IsShortcut= ║ ║ │ │REGI $HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache,IECache ║ ║ │ │TEAM SET Val=" cdcsd ,| SET PT=Software\"a ,| REGI $HKLM\%&PT%\\%&Val%=1\\2 ," //Super Mode ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is complicated,please refer to the instructions carefully.Example 3 shows ║ ║ │ │ reading the position of IE cache. ║ ║ │ │To delete> REGI HKCU\abc= or TEAM REGI HKCU\abc=| ║ ║ │ │Null string> REGI HKCU\abc="" or TEAM REGI HKCU\abc= | or REGI $HKCU\abc= //or other leading ║ ║ │ │ characters for string (* ** ~ ~~). ║ ║ │ │ or REGI HKCU\abc=%&NOTHING% //%&NOTHING% as a variable of null. ║ ║ │ │ If "" itself,the leading characters themselves or a purely null string is needed to be ║ ║ │ │ input,it can be transfered to a variable or a leading character can be employed to achieve ║ ║ │ │ this. ║ ║ │ │To input null characters at front,format 1> REGI $HKCU\abc= 123 ║ ║ │ │To input null characters both at front and back,format 2> TEAM REGI $HKCU\abc= 123 | ║ ║ │ │To input null characters both at front and back,format 3> REGI $HKCU\abc=%VAL% // %VAL% ║ ║ │ │ contains any combination of null characters. ║ ║ │ │REGI --0 $HKCU\abc\! //to clear; REGI --0 $HKCU\abc= //to create a null item; ║ ║ │ │REGI --16 @HKCU\abc=313233 //hex ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RPOS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RPOS[*] [*] [-case] [[*][~][VarName][,[~]LineVarName]=Char,Num,Str //prefix* for many ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the position in which the specified "Char" appears counting from the right side of ║ ║ │ │a "Str".* indicates VarName following behind.~indicates figuring out position from right. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the outcome of the command; -case:case sensitive. ║ ║ │ │■Str:the string to check; any character or space permitted. ║ ║RPOS│ │■Char:the character to check,not case sensitive; any character or space permitted.Multiple ║ ║ │ │ characters will be treated in the substring mode.If the substring is",",it should closely ║ ║ │ │ follow = . ║ ║ │ │■Num:to specify the number of times the character to check appears. ║ ║ │ │■RPOS*:It is the SubStr to search for,ie the part between "=" and ",",any character or ║ ║ │ │ space permitted. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RPOS iPos=a,2,123A56|1234A6|abcdef or RPOS iPos=a,3,123A56|1234A6|abcdef ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If "Num" is smaller than 1,the command will return the position of the character to check ║ ║ │ │ from the left of the string,eg,the outcome of the example above is 4; If the returned ║ ║ │ │ outcome is 0,that means no specified character is found. ║ ║ │ │☼This command will treat the string in Unicode.The returned value of example 1 is 12 and ║ ║ │ │ example 2 is 4.The substring cannot contain ",",which can be treated as a character. ║ ║ │ │☼The character starting from the second one of the substring cannot be ",",but the first ║ ║ │ │ one and the character mode can be ",".It can be transfered to a variable in that case. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RSTR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RSTR [*] <=>, ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To cut out the specified number of characters from the right side of a specified "Str" and ║ ║ │ │return the outcome to a specified variable. * indicates VarName following behind. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the outcome of the command; ║ ║RSTR│ │■Str:the source string,whose length is unlimited; ║ ║ │ │■Num:the number of the characters to cut out. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RSTR aStr=2,1234567890 or RSTR aStr=5,1234567890 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If "Num" is smaller than 1 or exceeds the length of the source string,the returned outcome ║ ║ │ │ will be the whole source string(the same as the string copy); ║ ║ │ │☼This command will treat the string in Unicode.The returned value of example 1 is "90",and ║ ║ │ │ example 2 is "67890". ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'RUNS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│RUNS , ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the startup item of Windows. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■PrgmCMD includes various kinds of executable commands like EXE,CMD,BAT and so on with ║ ║ │ │ their params likely to be present.StartItemName is indicated in the form of characters. ║ ║RUNS├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│RUNS PECMD.EXE EXEC !%CurDrv%\outpart\DRIVER\STARTDRIVER.CMD,Install drivers. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The existing command of REGI can fulfill the same function.Only because the command line ║ ║ │ │ of REGI becomes too long does this separate command of RUNS come into being for this ║ ║ │ │ function. ║ ║ │ │ If there exists a single-byte English "," in PrgmCMD or StartItemName,it can be replaced ║ ║ │ │ with a Chinese double-byte one or transfered to a variable. ║ ║ │ │☼This command is not applicable to the command line but to config file only. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SCRN' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SCRN [-win] [W-VarName],[H-VarName][,x-VarName][,y-VarName][,TaskBarPositionVarName] ║ ║ │ │SCRN -cap[gui] [[:fmt:]File],[#WinID|[;SrcFile]] //CaptureScreen fmt as:image/png ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the current width and height of the screen.-win:as large as a maximized window. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SCRN│PARA│■VarName:to store the current width and height of the screen. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SCRN ScrW,ScrH SCRN ScrW,ScrH or SCRN -cap a.bmp,0 or SCRN -cap win.bmp,#1181336 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼VarName cannot be the same as the existing variable names.If the command ends up with an ║ ║ │ │ error,the returned outcome for the two variables will be null or 0. ║ ║ │ │☼Capture:Capture if CountPosParam>=1.Save last if no PosParam or WindID.Left if no FileName ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SED' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SED [-[Lf:Lt:Rf:Stp]] [-ni] [-t[s]] [-ex] VarName[;TimesName]=[TimesSubs][:TimesSkip][Mark], ║ ║ │ │ SearchRegularExpression,SubstituteSubstring,SourceString //substitute. ║ ║ │ │SED [-ni] [-many] VarName[;TimesName][;LineName]=?[Times][:SkipS][MarkS],FindRegularStr, ║ ║ │ │ [SubNm1;SubNm2],SourceStr //query position 0:not found. -many/*: return many.-L:SplitLn ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To substitute or search a regular expression. -t:translate character set. -ts[1]:translate ║ ║ │ │string set(Chr(13) separated[whole]). -ex [-ex [-ex]]:SourceString[RegStr[SubstituteStr]] ║ ║ │ │is a varname. -[Lf:Lt[:Rf]]for vector -h[~]?LeadStr_UnlessHead[NotInclude] ║ ║ │ │-e[~]?EndStr_UnlessTail[NotInclude] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SED │PARA│Mark:three characters,respectively corresponding to three strings behind. * indicates not ║ ║ │ │interpreting(left as the literal is), _ refers to a placeholder. -many/*return Many Pos ║ ║ │ │*ni:not case sensitive. \u:to shift to upper case, \l:to shift to lower case. ║ ║ │ │-[n1:n2]:vector operation. ~before VarName/LineVarName:to figure out position from right. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SED &&V=3:1,[A-Z],=,NiHaoABC or SED &&V=?:1,[A-Z],,NiHaoABC or SED -t &&V=0,[AB],ab,ABA13 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │TimesSubs is 1 by default(0 for SubNmS),0 means all; TimesSkip is 0 by default. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SEND' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SEND [-gui[-m][-nfocus][-right|-left|-top]] [--ext] [--s] [;KeyCode2]... ║ ║ │ │SEND -m flag;dx;dy[;dat;[extdat]] //send mouse event ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To simulate keys/mouse.--ext:EXTENDEDKEY --s:SILENT //support: ; , : / ' ' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SEND│PARA│■Virtual key code:like VK_NUMLOCK.Refer to the list of vitual keys behind and related ║ ║ │ │ programming materials for more.If KeyCode ends with "_",it only simulates the key being ║ ║ │ │ pressed down and "^" only simulates the key being up.Otherwise,it simulates both. ║ ║ │ │■KeyCode:Simple keys("a"~"z" or "0"~"9") can be indicated as letters directly; Other keys ║ ║ │ │ should be indicated with "#" followed by the virtual key code. ║ ║ │ │ If KeyCode ends with "_",it only simulates the key being pressed down and "^" only ║ ║ │ │ simulates the key being up.Otherwise,it simulates both. ║ ║ │ │ The code without the leading character # and whose length is >=2 is supported,as well as ║ ║ │ │ the one beginning with 0x. The name strings of VK_ are also supported. ║ ║ │ │■flag: 0x8000:absolute position. 1:Move.2/4:Press/Release left button. 8/0x10:Press/Release ║ ║ │ │ right button. 0x20/0x40:Press/Release middle button. 0x80/0x100:Press/Release X button. ║ ║ │ │ 0x800:wheel button rolled. 0x4000:map to entrire virtual desktop. 0x100000:TouchScreen ║ ║ │ │ dx/dy:absolute/relative pos. dat:0 or 120 when wheel rolled and clicked. extdat:0 for now ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SEND #0x12_,#0x09_,#0x09^,#0x12^ or SEND VK_NUMLOCK ║ ║ │ │SEND 0x12_,0x09_,0x09^,0x12^ //old format ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │The example above is to simulate Alt+Tab.The KeyCode supports hex and decimal. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SERV' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SERV [-wait] [Switch][?RetVarName] [!] ║ ║ │ │SERV-create [?RetVNm] SvrName,binPath,Tp,Start,ErrCtrl,Depend,obj,pwd,DispName,Group,Tag ║ ║ │ │SERV-delete [-stop-] [?RetVNm] SvrName //include stopping if no -stop- ║ ║ │ │Switch: -boot -system -auto -demand -disabled -delayed-auto ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To enable,disable or query service or drivers. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SERV│PARA│■specified SrvName."!" means disabling the service,otherwise enabling. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SERV FBWF or serv-create imdisk,system32\drivers\imdisk.sys,1,2,0,,,,ImDiskVirtualDiskDriver ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │This command can be employed to enable the FBWF service(if installed) to enlarge the writing ║ ║ │ │space of the system disk so that PE can be run from CDROM. ║ ║ │ │The returned outcome of query:ErrorCode ServiceType CurrentState ControlsAccepted ║ ║ │ │Win32ExitCode ServiceSpecificExitCode CheckPoint dwWaitHint dwProcessId dwServiceFlags ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SHEL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SHEL [-user|-sys] [-shel:"AutoCMD"] ║ ║ │ │ [,PWBASEStr] [,TimesRetry] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To load the specified SHELL and lock it. -user:forced to coordinate with MAIN -user. ║ ║ │ │-sys:forced to be the system Shell. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■SHELL FileName(including path.Environment variables can be used) ║ ║ │ │■The password should be letters and numbers,case sensitive. ║ ║ │ │■If PWBASEStr is absent,the automatic login will be initiated.The default TimesRetry is 3. ║ ║SHEL├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SHEL %SystemRoot%\EXPLORER.EXE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The function of this command resembles EXEC $.Codes for shutdown in the process can be ║ ║ │ │ modified(to hook the function of "ExitWindowsEx"). ║ ║ │ │☼This command is also capable of locking SHELL and automatically loading SHELL when it is ║ ║ │ │ killed. ║ ║ │ │☼It is suggested using this command with HIDE so as to achieve a better effect. ║ ║ │ │☼This command is not applicable to the command line but to config file only. ║ ║ │ │☼SHEL should be placed behind HOTK and HIDE. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SHOW' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SHOW [=1] [-check] [-SKIP=Type] [-skiptp:Tp1;Tp2] [-skippt:hd1:lpt1;hd1:lpt2] ║ ║ │ │ [-from:DrvChr[Tbl]] [*&-] [DiskPart],[UDrvChr[Tbl]],[TimeWait],[StartDrvChr[Tbl]] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To display removable disks,the hidden partitions on fixed disks or unmounted partitions ║ ║ │ │existing in the system and assign drive letters to them. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■&:local mode,unlikely to be seen by other processes.When mounting,* means lasting mounting ║ ║ │ │ and when unmounting,* indicates unmounting all.Otherwise it refers to the last mounting. ║ ║ │ │ - indicates unmounting.=1 indicates not mounting if mounted.-check:not to mount if NA. ║ ║ │ │■DiskPart:consisting of [HDNo or ID:PartNo or ID#PartNo].Either "HDNo" or "ID" is adopted. ║ ║ │ │ ♦HDNo:number,< 0 indicates hard disk,U disk and removable hard disk all; ║ ║ │ │ 0 refers to "hd0",1:"hd1",2:"hd2",3:"hd3",and so on; ║ ║ │ │ ♦ID:indicated as "F" or "U"."F" refers to the fixed hard disk,"U":u disk or USB removable ║ ║ │ │ disk; ║ ║ │ │ ♦PartNo(logical):number,< "0" indicates all partitions without drive letters,"0":all ║ ║ │ │ visible partitions without drive letters,"1":the first partition,"2":second,"3":the ║ ║ │ │ third,and so on.Being absent or - indicates deleting.The one behind # refers to physical ║ ║ │ │ partition number.1~4 as the main partitions and 5~N as the logical partitions. ║ ║SHOW│ │■DrvLetter:indicated as "A~Z",If absent or unproperly set,it will be automatically ║ ║ │ │ assigned.Chinese characters are permitted,which help settle the insuffiency of drive ║ ║ │ │ letters and keep secret(cannot be listed).They can be mounted or unmounted as is needed. ║ ║ │ │■TimeWait:number,indicating waiting for a certain period of time (ms)for devices getting ║ ║ │ │ ready to be assigned with drive letters. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SHOW 0:1,H or SHOW U:1,U or SHOW F:0 or SHOW U:0,,3000 or SHOW U:-1 or SHOW 0:-1 or SHOW ║ ║ │ │SHOW 0#1,H or SHOW 0:1 or SHOW 0#1 or SHOW - 0:1 or SHOW - 0#1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Computers of some types can recognize the removalbe hard disk after system starts up,yet ║ ║ │ │ has not assigned a drive letter to it.This can be fulfilled by using the command of SHOW ║ ║ │ │ with the identifier of "U".Example 2 shows assigning the drive letter "U:" to the first ║ ║ │ │ partition of the removable hard disk. ║ ║ │ │☼Example 1 shows "HD 0 Part 1" is assigned with "H:" and example 3 shows automatically ║ ║ │ │ assigning drive letters to all the visible partitions on the fixed hard disk; ║ ║ │ │☼Usually,"TimeWait" can be absent.It is internally used when PECMD residenting in memory ║ ║ │ │ has detected the insertion of the removable hard disk; ║ ║ │ │☼The command of SHOW with all params absent will not voluntarily mount the hidden partition ║ ║ │ │ unless the "PartNo" is set as "-1"; ║ ║ │ │☼Use SHOW or SUBJ to delete the drive letter so as to load the outparts in the hidden ║ ║ │ │ partition and keep its attribution of being hidden at the same. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SHUT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SHUT [-force] [E|ONum|C|R|L|H|S|SHUTDOWN|-] [--] [ScriptParamList] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To shut down or reboot the computer. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ -force:to shut down quickly. ║ ║ │PARA│■No params:to shut down the system by default; ║ ║ │ │■"E":to eject CDROM first and then wait for 10 minutes; ║ ║ │ │■"ONum":to eject CDROM first and wait for the specified number of MS,10000ms by default. ║ ║ │ │■"C":to shut down CDROM; ║ ║ │ │■"H":to be in dormancy.It should be supported by the system(enabled in the power option in ║ ║ │ │ the control pannel); ║ ║SHUT│ │■"L":to logout; ║ ║ │ │■"R":to reboot the system; ║ ║ │ │■"S":to suspend the system; ║ ║ │ │■"K":to lock the computer; ║ ║ │ │■"SHUTDOWN":offbeat shutdown.With params -s:to shut down(default) -r:to reboot -f:to force ║ ║ │ │ (default) --f:to cancel -f,-t:number of seconds ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SHUT H ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼That the command of "EXEC" hooks the specified function "ExitWindowsEx" and coordinates ║ ║ │ │ with SHUT will intercept all calls for shutting down the system so that it is properly ║ ║ │ │ done(Notice that this is a quick shutdown which may not save all the data). ║ ║ │ │☼If drive letters cannot be timely assigned to such devices as u disk and USB removable ║ ║ │ │ hard disk or shutdown appears slow,please try restarting AudioSrv(effective to some ║ ║ │ │ SIGMATEL HD series of integrated sound card) ║ ║ │ │☼TEAM EXEC =PECMD SERV !AudioSrv|SERV AudioSrv ║ ║ │ │☼REGI HKLM\SOFTWARE\PELOGON\FORCESHUTDOWN=#1 //With such setting,shutdown in StartupMenu ║ ║ │ │ is a quick one. ║ ║ │ │☼Automatically executed on shutdown:%SystemRoot%\System32\OnShutdown.wcs OPCode ║ ║ │ │ ScriptParamList ║ ║ │ │ OPCode:shutdown,reboot,logout,suspend,hiber,poweroff,unknown lock ║ ║ │ │ The shutdown menu supports:shutdown,reboot,logout,poweroff,unknown ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SITE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SITE , ║ ║ │ │SITE *touch[:[cr][*local:|*local0:|*sys:|*sys0:|*utc:]Time],[,RetVarName] ║ ║ │ │ ☼to update the time of the file. ║ ║ │ │SITE ?VarName[,ProduVerName]=FVER,FileName ☼to query the version of the file. ║ ║ │ │SITE ?[-local -ws -link] [[*]CreaTimVar][,[*]WritTimVar][,[*]AccTimVar]=FTIME,FileName ║ ║ │ │ ☼to query the time of the file. ║ ║ │ │SITE ?[AVarName][,HVarName][,RVarName][,SVarName][,FullVarName]=FATTR,FileName ║ ║ │ │ ☼to query the attribution of file. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set or clear the attribution of file and directory,supportive of 4 types of attribution ║ ║ │ │A,H,R,S. FTIME is compatible with DATE,with the format of *local0. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SITE│PARA│■To set the attribution,use "+",and to eliminate,use "-",(A=DOC,H=HIDDEN,R=READ-ONLY,S=SYS) ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SITE %SystemDrive%\BOOT.INI,+H+R ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼SITE is capabile of setting the attribution of both file and directory.* before TimeVar ║ ║ │ │ indicates returning an integer of UTC time,which is directly applicable to comparison ║ ║ │ │ operation,otherwise a string is returned with all sections of the same width in the form ║ ║ │ │ of YearMonthDayHourMinuteSecondMicrosecondWeek.FVER/FVER/FATTR is mapped to the command of ║ ║ │ │ ENVI/SET. ║ ║ │ │ The variable of AHRS returns 0 or 1; FullVarName returns all attributions(more than 4)in ║ ║ │ │ hex; Null if fails. ║ ║ │ │☼-local:to return the local time and world time by default.-ws:to add a sequence number of ║ ║ │ │ the week in a year to the end of the returned string. -ws1:Sunday as the weekend. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SIZE' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SIZE [-link] <=> ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the size of a specified "FileDir",byte as the unit. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■VarName:to store the size of file and directory. -link:follow link file ║ ║SIZE│ │■FileDirName:a valid name of file and directory. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SIZE iSize=C:\Windows\System32\calc.exe or SIZE iSize=C:\Windows\System32 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If FileDirName is a relative path,it is relative to the working directory of WinCMD.EXE ║ ║ │ │ or the config file. ║ ║ │ │☼The outcome of example 1 is the size of "calc.exe" and example 2 is the size of the ║ ║ │ │ directory "C:\Windows\System32". ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SLID' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SLID [-right] [-left] [*] ,[,ValInfo][,CMDParamName][,CMD][,Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│To create a slider in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■SlidName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■SlidShape:the position and size of the slider.The format is , ║ ║ │ │ L,T,W and Hare respectively followed by corresponding numbers. ║ ║ │ │■ValInfo:[StartVal][:EndVal][:InitVal][:PageSize].Default:0:100:0. ║ ║SLID│ │■Event:the command to execute when it is clicked,a valid one supported by PECMD. ║ ║ │ │■Status:number,minus:disabled.0x10:invisible.0x40:horizontal.0x80:no slider. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SLID SLID2,L32T108W300H54,30:100:50,CALL OnSPIN1 %SLID2%,0x40 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼SLID is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼To set the text on SPIN,use "ENVI @SLIDName=ButtonTxt". Refer to ENVI. ║ ║ │ │☼Use "ENVI @SLIDName.Enable=[#]Num" to set its serviceability,0:disabled; 1:enabled(not to ║ ║ │ │ respond).#:used in the subprocess. ║ ║ │ │☼USe "ENVI @SLIDName.Visible=Num" to set its visibility; 0:invisible; not 0:visible. ║ ║ │ │☼Use "ENVI @SLIDName.VAL=[CurVal][:InitVal][:EndVal][:PageSize]" to set the ValInfo. ║ ║ │ │☼Use "ENVI @SPINName.VAL=?[CurValVarName][:InitValVarName][:EndValVarName][:PageSizeName]" ║ ║ │ │ to query ValInfo. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SOCK' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SOCK [*] ButtonName; [ProFamily][; ProType][; ProID] //Commas can be used,the same below. ║ ║ │ │SOCK --file [*] CtrName;[we][-rwd];FileName //to open an automatically released file ║ ║ │ │ handle for API, w:writable we:writable+exist -:reset share ║ ║ │ │SOCK --shm [*] CtrName;[w];ShareName;Len[;Src;Off;InitV;InitN] //Alloc shared mem.w:writable ║ ║ │ │SOCK --event [*] CtrName;ShareName[;initv;bManual] //Alloc event ║ ║ │ │SOCK --sem[aphore] [*] CtrName;ShareName[;initv;maxv] //Alloc semaphore ║ ║ │ │SOCK --mutex [*] CtrName;ShareName[;InitLock(0)] //Alloc Mutex ║ ║ │ │SOCK --mailslot [*] CtrName;ShareNam[;bServer;TimeoutMs] //mailslot .read/write receve/send ║ ║ │ │SOCK --pipe [*] CtrName;ShareNam[;TimeoutMs;BufSZ;Link] //pipe .read/write .connect ║ ║ │ │ Link: 0x1:Now 0x2:Client 0x4:Server 0:Auto(First Server) ║ ║ │ │SOCK --gethostbyname[*|#] IPName;HostName //to return IP address,*:multiple addresses ║ ║ │ │ are separated by space,#:integer. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To define an automatically recyled object of network connection.--exist:check(PIPE may 231) ║ ║ │ │ --only:only one ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■ButtonName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■ProFamily:generally,the default internetwork:AF_INET=2. ║ ║SOCK│ │■ProType:with connection:SOCK_STREAM=1(default),without connection:SOCK_DGRAM=2 ║ ║ │ │■ProID: TCP:IPPROTO_TCP=6(default) UDP:IPPROTO_UDP=17 IP:IPPROTO_IP=0 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SOCK s1 or SOCK s2; ; %&SOCK_DGRAM%; %&IPPROTO_UDP% ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼"ENVI @Name.connect=[ErrVarName]; IP; PortID",to connect to the server.ErrVarName returns ║ ║ │ │ the error code,0:no error. ║ ║ │ │☼"ENVI @Name.write=[ErrVarName]; [LenVarName]; [DataVarName]; [NumByteSent[@Offset]] ║ ║ │ │ [; SendMark][; IP][; PortID]".LenVarName returns the actual number of bytes sent,which is ║ ║ │ │ the number of bytes contained in DataVarName by default.If connected,"IP PortID" is not ║ ║ │ │ necessary or applicable to SOCK_STREAM. ║ ║ │ │☼"ENVI @Name.read=[ErrVarName]; [LenVarName]; [DataVarName]; [*][NumByteReceived[@Offset]] ║ ║ │ │ [; SendMark][; IP][; PortID]".LenVarName returns the actual number of bytes received, ║ ║ │ │ which is the number of bytes contained in DataVarName by default.* indicates automatically ║ ║ │ │ trying reading for many times until all the data is read. ║ ║ │ │ "IPVarName PortIDVarName":to return the IP and port of the opposite side,with # before ║ ║ │ │ IPName,the command will return the object of address and the length of the object. ║ ║ │ │☼"ENVI @Name.close=[ErrVarName]",to automatically release the connection.ErrVarName returns ║ ║ │ │ the error code,0:no error. ║ ║ │ │☼"ENVI @Name.sock=[ErrVarName][;ProFamily][;ProType][;ProID]",to regenerate a new sock. ║ ║ │ │☼"ENVI @Name.shutdown=[ErrVarName][;Mode]",to friendlily inform closing the connection. ║ ║ │ │ default(2):to close bidirectionally.0:to receive 1:to send ║ ║ │ │ [.sock] and [.close] contain this function. ║ ║ │ │☼"ENVI @Name.bind=[ErrVarName]; IP; PortID",to bind the server with monitored IP and port. ║ ║ │ │☼"ENVI @Name.listen=[ErrVarName][ConnPoolSize]",the number of the waiting connections to be ║ ║ │ │ simutaneously cached,7 by default. ║ ║ │ │☼"ENVI @Name.accept=[ErrVarName];[MonitorConnfd][; IPVarName][; PortVarName]".MonitorConnfd ║ ║ │ │ is the father connection number of listen. ║ ║ │ │ "IPVarName PortIDVarName":to return the IP and port of the opposite side,with # before ║ ║ │ │ IPVarName,the command will return the object of address and the length of the object. ║ ║ │ │☼"ENVI @Name.fd=fdVarName",fdVarName returns the internal connection number of the ║ ║ │ │ connection for accept,select and WINDOWSAPI. ║ ║ │ │☼"ENVI @Name.mem=mVName",mVName returns the SHM address. ENVI-mkfixdummy &&V=%mVName%:len ║ ║ │ │☼"ENVI @Name.setsockopt=[ErrVName];[CfgLevel];CfgItem;CfgDatVName[;CfsgDatsLen]" ║ ║ │ │ ConfigLevel is SOL_SOCKET(0xffff) by default.ConfigDataLen is all the data by default. ║ ║ │ │ Commonly used:TEAM ENVI#$ &&v=1| ENVI @sv.setsockopt=; ; %&SO_REUSEADDR%,&v //allowed to ║ ║ │ │ remonitor the address. ║ ║ │ │☼"ENVI @Name.ioctlsocket=[ErrVName];;ConfigItem; ConfigDataVarName" ║ ║ │ │☼"ENVI @Name.DeviceIoControl=[ErrVName];OP;IAddr|*PENm;InLen;OAddr|*PeNm;Olen;RNM[;lpov] ║ ║ │ │☼"ENVI @Name.select=[ErrVName]; MSTimeout; [[ReadRetVarName:]readfd1:readfd2:...] ║ ║ │ │ [; [WriteRetVarName:]writefd1:writefd2:...][; [AbnormalRetVarName:]abnormalfd1: ║ ║ │ │ abnormalfd2:..]. "," indicates itself. ║ ║ │ │ If params from ReadRetVarName to the end all absent,the default is to wait till the socket ║ ║ │ │ is ready for data reading.The default of MSTimeout is -1 indicating waiting all the time ║ ║ │ │ and 0 indicating checking and returning immediately. ║ ║ │ │☼"ENVI @Name.getname=[ErrVarName]; [0/1]; [IPVarName][; PortIDVarName]".to return IP and ║ ║ │ │ port of this side(0 by default)/the opposite side(1).The same as above. ║ ║ │ │☼"ENVI @Name.wait=[ErrVName][;ms][;[[*]handle2:handle3...]]" //wait .def INFINITE *:All ║ ║ │ │ "ENVI @@wait=(Type)ShareName;[ErrVName][;ms][;[[*]handle2:handle3...]]" ║ ║ │ │☼"ENVI @Name.setevent=[ErrVName][;1][;NmOldV]" //set/free it. 0 for clear all event ║ ║ │ │ "ENVI @@setevent=(Type)ShareName;[ErrVName][;1][;NmOldV]" Type:event/mutex/sem[aphore] ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SPIN' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SPIN [-right] [-left] [*] ,[,ValInfo][,CMDParamVarName][,CMD][,Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a button with up and down keys in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■ButtonName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■Shape:the position and size of the button.The format is , ║ ║ │ │ L,T,W and H are respectively followed by corresponding numbers. ║ ║ │ │■ValInfo:[PartnerEDITVarName][:StartVal][:EndVal][:InitVal].Default:0:100:0.EDITVarName is ║ ║ │ │ prior to autobudy. ║ ║SPIN│ │■Event:the command to execute when it is clicked,a valid one supported by PECMD. ║ ║ │ │■CMDParamVarName:[NewValVarName][:ButtonVarName][:OldValVarName].The ButtonVarName returns ║ ║ │ │ 0/1,corresponding to the down button/up button. ║ ║ │ │■Status:number,minus:disabled,0x10:invisible,0x20:wrap,0x40:horizontal,0x80:to autobudy the ║ ║ │ │ previous control. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SPIN SPIN2,L32T108W300H54,edit1:-10:10,&&pos:&&id:&&oldv, CALL OnSPIN1 %&pos% %&id%,0x40 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼SPIN is generally located between _SUB and _END. Refer to _SUB and CALL ║ ║ │ │☼To set the text on SPIN,use "ENVI @SPINName=ButtonTxt". Refer to ENVI ║ ║ │ │☼Use "ENVI @SPINName.Enable=[#]Num" to set its serviceability.0:disabled; 1:enabled(not to ║ ║ │ │ respond).#:used in the subprocess. ║ ║ │ │☼Use "ENVI @SPINName.Visible=Num" to set its visibility.0:invisible; not 0:visible. ║ ║ │ │☼Use "ENVI @SPINNaem.VAL=[CurVal][:StartVal][:EndVal]" to set the ValInfo. ║ ║ │ │☼Use "ENVI @SPINName.VAL=?[CurValVarName][:StartValVarName][:EndValVarName]" to query the ║ ║ │ │ ValInfo. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SSTR' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SSTR [-case] <=>,, ║ ║SSTR├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the position in which the specified "SubStr" appears from the left of "SrcStr". ║ ║ │ │alias of LPOS* ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'STRL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│STRL [*] [-m|-8] <=> ║ ║ │ │STRL -bin =PEVarName //to return the number of bytes of the memory for an object ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To return the length of a specified "Str".* indicates a VarName following behind,and if not, ║ ║ │ │-1 will be returned. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ -m/8:to return the number of bytes of a multibyte/UTF8 code,2/(>=2) for a Chinese ║ ║ │ │ character generally. Otherwise a UNICODE number will be returned,1 for a Chinese character ║ ║ │ │ .[-m is generally not used]. ║ ║STRL│PARA│■VarName:to store the outcome of the command; ║ ║ │ │■Str:the string to check,length unlimited. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│STRL iLen=1234567890 or STRL dLen=ABCDEFGHI ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command returns the length of a Unicode string.The returned value of example 1 is 10 ║ ║ │ │ and example 2 is 5. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SUBJ' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SUBJ [-BD[-]] [*&-],[Path_assigned_to_VirDrv|?RetName] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To associate the path with the drive number,equivalent to the command of SUBST in CMD. ║ ║ │ │-BD[-] Notify Add/Remove drive letter ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║SUBJ│PARA│■&:local mode,may not be seen by other processes.When mounting,* indicates lasting mounting ║ ║ │ │ and when unmounting,* indicates unmounting all.Otherwise it refers to the last mounting. ║ ║ │ │■If "Path assinged to VirDrv" is absent or - is present,the specified drive will be deleted ║ ║ │ │ Chinese characters can be used for the virtual drive. ║ ║ │ │ The path can be one for a physical device,like \Device\HarddiskVolume7 ║ ║ │ │ \\.\CDROM0~N \\.\TYPE0~N \\?\Volume{6467fdff-fe6d-11d5-8ba2-0000e232d2e9}\. ║ ║ │ │ A drive letter can be continuously mounted to different positions.The seen is the last. ║ ║ │ │ Unmounting without * will see the opposite procedure.Unmounting with - means unmounting ║ ║ │ │ the specified target behind.Chinese characters help to settle the insufficiency of drive ║ ║ │ │ letters and keep secrect and can be mounted or unmounted as is needed.One device can be ║ ║ │ │ mounted more than once. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SUBJ B:,D:\My or SUBJ *Mao:,\Device\HarddiskVolume7 or ║ ║ │ │SUBJ *Mao:,\Device\Harddisk0\Partition1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼When a drive is to be virtualized,it should not be an exsisting one.When a virtual drive ║ ║ │ │ is to be deleted,the drive letter should be correct,or a physical one is likely to be done ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'SWIN' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│SWIN [*] [PicBoxName]:ClsName:[Name],,[InternalPos][,Status] //picture in picture ║ ║ │ │SWIN [*] -:ClsName:[Name],,,[Status] ║ ║ │ │SWIN -sub[:-#LxTyWwHh]] [ClsName]:[Name][,][CMDLineParam] //external subwindow ║ ║ │ │ -:with title, #:with frame ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│attribution list. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ * after SWIN indicates being automatically recycled before quitting the block or function. ║ ║ │ │■PicBoxName:the name of the picture box. ║ ║ │PARA│■ClsName:the window defined by _SUB.An instance of window will be created according to it. ║ ║ │ │■Name:string,the name of the window instance should be unique,not the same as those of ║ ║ │ │ other controls or environment variables.The default is a class name. ║ ║ │ │ A proper number of "-" being added before PageName of the subinterface indicates directly ║ ║ │ │ promoting the PE variables of the subinterface by corresponding levels. ║ ║SWIN│ │■Shape:the position and size.The format is:.L,T,W and H are ║ ║ │ │ respectively followed by corresponding numbers. ║ ║ │ │■InternalPos:the position in the picture box.The format is .L and T are ║ ║ │ │ respectively followed by corresponding numbers,0 by default. ║ ║ │ │■Status:number,minus:disabled,0x10:invisible,0x40:with frame,0x80:horizontal scroll bar, ║ ║ │ │ 0x100:vertical scroll bar. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│SWIN -:Page1,L42T5W194H125 or SWIN Swin1:Page1,L42T5W194H125,,0x1C0 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼SWIN is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼Use "ENVI @Name.Enable=Num" to set its serviceability.0:disabled,1:enabled. ║ ║ │ │☼Use "ENVI @Name.Visible=Num" to set its visibility; 0:invisible,1:visible. ║ ║ │ │☼In the instance of window,this refers to the current real instance of window.- refers to ║ ║ │ │ the window instance of parent level.Instances of different levels are separated by : like: ║ ║ │ │ ENVI @this:Page1:ITEM.Enable=1 ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TABL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TABL [-hfont:HeadFontSize[:FontNameAdorn]] [-font:FontSize[:FontNameAdorn][:HeadH:HeadColor: ║ ║ │ │ Grad:::FontH:FontW:LineH]] [-color:[BKColor][#TxtBKColor][#DefaultTxtColor][#SelCellCo ║ ║ │ │ lor]] [-sps] -ckszCheckBoxSz [*] [Name],[,FormatData][,Data][,Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To make a table. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │ * after TABL indicates being automatically recycled after quitting the block or function. ║ ║ │ │ -sps:The columns are separated by successive null characters.*:to select the default color ║ ║ │ │ as the one of selected cell,which is also applicable to the line selection if only one ║ ║ │ │ line is available for selection. ║ ║ │PARA│■Name:string,the name of a window instance should be unique,not the same as those of other ║ ║ │ │ controls or environment variables.The default is the name of a class. ║ ║TABL│ │■Shape:the position and size of the table.The format is:.L,T,W ║ ║ │ │ and H are respectively followed by corresponding numbers. ║ ║ │ │■FormatData:the head of the table.Columns are separated by TAB.For each column: ║ ║ │ │ "[#Color[#BKColor]][=|+]Width:Title".If absent,the number of the columns are determined by ║ ║ │ │ data.* before Width indicates left alinged(default),= right aligned,+ center aligned. ║ ║ │ │ The DefaultTxtColor is prior to others.It is the same with the added columns below. ║ ║ │ │■Data:the data to initialize the content of the table.Columns are separated by TAB and ║ ║ │ │ lines are separated by line breaks. ║ ║ │ │■Status:number,minus:disabled.0x10:invisible.0x40:with frame.0x80:without horizontal scroll ║ ║ │ │ bar.0x100:without vertical scroll bar.0x200:without grid lines.0x400:with check. ║ ║ │ │ 0x800:to drag the headline to adjust the sequence of columns.0x2000:without headline. ║ ║ │ │ 0x4000:to disable width ajustment.0x10000:only one line permitted to choose(highlight). ║ ║ │ │ 0x40000:double click to select the cell.0x80000:to disable line selection.0x100000:to ║ ║ │ │ color the checked line. 0x200000/0x400000 1st/All column may include pic. ║ ║ │ │ "*P:W{W}H{H}S{sW}V{sH}X{sX}Y{sY}|?File[>S{sW}V{sH}X{sX}Y{sY}|?|FileChk]%Nla%Text" ?[?]Ass- ║ ║ │ │ ociate[Replace] |Adv-Mode check/Sel {sW}{sH}{sX}{sY}:- indicates a multiple.0x800000/0x10 ║ ║ │ │ 00000: OnlyHori/vert line. Notice that selecting and checking are two separate solutions! ║ ║ │ │ 1> click a line to color:0x10000 ║ ║ │ │ 2> double click the cell to select and color,disable line selection: ║ ║ │ │ 0x40000+0x80000=0xC0000 ║ ║ │ │ 3> check but not color,disable line selection:0x80000+0x400=0x80400 //multiline check ║ ║ │ │ 4> check and color,disable line selection:0x100000+0x80000+0x400=0x180400 //same above ║ ║ │ │ 5> no check and color,disable line selection:0x100000+0x80000=0x180000 coordinating with ║ ║ │ │ Check=XX; 2 //multiline selection without check ║ ║ │ │ 6> color freely:0x80000 //ENVI @Name.color=Color ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TABL TABL1,L42T5W194H125,50:C1%TAB%+50:C2%TAB%-50:C3,%MUI_LINE_DATA% ║ ║ │ │ENVI @TABL1.Sel=?.&Line,&Col ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼TABL is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼Use "ENVI @Name.Enable=Num" to set its serviceability; 0:disabled,1:enabled. ║ ║ │ │☼Use "ENVI @Name.Visible=Num" to set its visibility; 0:invisible,1:visible. ║ ║ │ │☼Use "ENVI @Name.Sel=LineID[; Val]" to select a line.LineID and ColumnID start from 1 ║ ║ │ │ (the same below).Val:0/1,1 by default,0:to cancel the selection.2:selectd or ║ ║ │ │ unselected in turn. ║ ║ │ │☼Use "ENVI @Name.Sel=?[*]VarName" to get the current LineID.<=0:not selected.*:to return ║ ║ │ │ all selected lines separated by space. ║ ║ │ │☼Use "ENVI @Name.Sel=?.[LineVarName][; ColumnVarName]" to get the current position of the ║ ║ │ │ cell focused by mouse.<=0:invalid. ║ ║ │ │☼Use "ENVI @Name.Sel=+Line; Column" to get the position of the currently selected cell. ║ ║ │ │ <=0:invalid.equal to double click. ║ ║ │ │☼Use "ENVI @Name.Sel=?+[LineVarName][; ColumnVarName]" to get the position of the currently ║ ║ │ │ selected cell.<=0:invalid. ║ ║ │ │☼Use "ENVI @Name.Val=?*;[NumLineVarName][; NumColumnVarName]" to get the numbers of lines ║ ║ │ │ and columns. ║ ║ │ │☼Use "ENVI @Name.Val=?*.*; VarName" to get all data,ENTER as line breaks. ║ ║ │ │☼Use "ENVI @Name.Val=?LineID[.ColumnID]; VarName" to query the content of a specified line ║ ║ │ │ /cell.Columns are separated by TAB(the same below). ║ ║ │ │☼Use "ENVI @Name.Val=LineID.ColumnID; Val" to set the content of a specified cell. ║ ║ │ │☼Use "ENVI @Name.Val=[>]LineID[*[*[*]]][#][.ColumnID][/LineH]; Val" to set the content of sp.║ ║ │ │ line.The interval is specified by the switch of TABL.LineID 0 indicates adding a new ║ ║ │ │ line from the bottom and fill with the content.If there is ColumnID,fill this column ║ ║ │ │ with the content.* behind LineID indicates multiline is permitted.,**[*],add line[cel] ║ ║ │ │ on need.#:to eliminate the redundant at the end,and "." can be absent.>:Insert ║ ║ │ │☼Use "ENVI @Name.Val=-[*]LineID[#NumLine]" to delete this line or several lines. ║ ║ │ │ *:to delete to the end. ║ ║ │ │☼Use "ENVI @Name.Val=.-ColumnID" to delete this column. ║ ║ │ │☼Use "ENVI @Name.Val=+;[#Color][#BKColor][=|+]ColumnW:ColumnTitle" to add a column. ║ ║ │ │☼Use "ENVI @Name.Check=?[*]VarName" to get LineID currently checked.Null means no checking. ║ ║ │ │ *:to return all lines checked,separated by space. ║ ║ │ │☼Use "ENVI @Name.Check=?LineID;VarName" to query if the line is checked. ║ ║ │ │☼Use "ENVI @Name.Check=LineID;Check" to set the status of checking.0:unchecked,1:checked ║ ║ │ │ 2:checked or unchecked in turn. ║ ║ │ │☼Use "ENVI @Name.Enable=?[*]VarName" to get LineID currently disbled. *:for all. ║ ║ │ │☼Use "ENVI @Name.Enable=?LineID;VarName" to query if the line is enabled. ║ ║ │ │☼Use "ENVI @Name.Enable=LineID;vEn[-]" to enable a line. 0:Disable,1:Enable,2:in_turn -:ns ║ ║ │ │☼Use "ENVI @Name.Color=[LineID].[ColumnID];[Color][;BKColor]" to set the cell/line/col color.║ ║ │ │ =?[LineID].[ColumnID];VarName;VarName; to query,return null if there is║ ║ │ │ no color.The color of cell is prior to the one of line and the one of line prior to ║ ║ │ │ the one of column.-1 means eliminating the setting of color. ║ ║ │ │☼Use "ENVI @Name.Color=ColumnID;[Color][;BKColor][;FontSize;FontName]" to set column_color ║ ║ │ │ =?ColumnID;[VarName][;VarName] to query,return null if no color. ║ ║ │ │☼Use "ENVI @Name.Color=*LineID;[Color][;BKColor][/LineH][;FontSize;FontName]" to set LColor ║ ║ │ │ =?*LineID,ColorVarName,to query,return null if there is no color. ║ ║ │ │ If FontSize is -,it means eliminating the font. ║ ║ │ │☼Use "ENVI @Name.UPos=?[@#][LnID].[ColID];L;T;R;B"to query pos. ?*LnID; ?ColID; @:ICO #LABEL ║ ║ │ │☼Use "ENVI @Name.Percent=[*Line]|[Line.Col];[Percent][C|R|L|F|K][:BkColor][:PrgColor] ║ ║ │ │ [:TxtColor][:TXT]" K:Skip CheckBox ║ ║ │ │☼Expand "Val=" to "Val=*:[l{LineSymbol}][c{ColumnSymbol}]:" if needed. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TABS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TABS [*] Name,,PropPageSet,[Status] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│property table. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before Name indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■Name:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■Shape:the position and size of the button.The format is .L,T, ║ ║ │ │ W and H are respectively followed by corresponding numbers. ║ ║ │ │■PropPageSet: Page1ClsName[:Page1Name][:Page1Title][:Page1Tip]; Page2ClsName[:Page2Name] ║ ║ │ │ [:Page2Titel]:[Page2Tip]; ... ║ ║TABS│ │ ClsName is the window defined by _SUB.Variables are supported.PageName is the practical ║ ║ │ │ name for operation,which is the ClsName by default. ║ ║ │ │ A proper number of "-" being added before PageName of the subinterface indicates directly ║ ║ │ │ promoting the PE variables of the subinterface by corresponding levels. ║ ║ │ │■Status:number,minus:disabled button,0x10:invisible,4:multiline,0x20:wide mode,0x40:with ║ ║ │ │ frame,0x80:vertical setting of types. ║ ║ │ │ THICKFRAME=0x40000 DLGFRAME=0x400000 BORDER=0x800000 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TABS TABS1,L32T108W300H54,Page1:P1:title1:tip1;Page2:P2:title1:tip1 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼TABS is generally located between _SUB and _END. Refer to _SUB and CALL. ║ ║ │ │☼To set the text of the property page:"ENVI @Name.TilteSN=Txt",SN starts from 1. ║ ║ │ │☼Use "ENVI @Name.Enable=Num" to set its serviceability; 0:disabled,not 0:enabled ║ ║ │ │☼Use "ENVI @Name.Visible=Num" to set its visibility; 0:invisible,not 0:visible. ║ ║ │ │☼Use "ENVI @Name.Select=SN" to set the selected page; >=1. %&Name.Select% %&Name.TilteSN% ║ ║ │ │☼To set the tips on the property page:"ENVI @Name.TipSN=Txt". %&Name.TipSN% ║ ║ │ │☼In window instance,this refers to the current real window instance.- refers to the window ║ ║ │ │ instance of parent level.Instances of different levels are separated by : like: ║ ║ │ │ ENVI @this:P1:ITEM1.Enable=1 ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TEAM' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TEAM[^#~+-@$%*?/\;,."'<] CMD1|CMD2|CMD3|CMD4|CMD5|......|CMDn ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To sequentially pre-execute all the commands in the specified command group. ^#~+- are the ║ ║ │ │alternative delimiters for |. <: right to left. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║TEAM│PARA│■one or more commands,separated by "|". ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TEAM TEXT Load Desktop|LOGO|HIDE|SHEL %SystemRoot%\EXPLORER.EXE|WAIT 3000 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command cannot be nested with IFEX or FIND. ║ ║ │ │☼TEAM nest:The outermost is broken by |,the inner by ||,and the further inner by |||... ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TEMP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TEMP [[@]Delete|[$]Setting] [InitDir][,VarName] ║ ║ │ │TEMP @[$]Setting NewTempDir,[VarName] //to set in silence. ║ ║ │ │TEMP [*del] [*tmpl:[Front]*[Back]] *tmpdir [,]VarName //to create the unique temporary ║ ║ │ │directory, *del:to automatically delete on exit. ║ ║ │ │TEMP [*del] [*tmpl:...]*tmpfile [,]VarName[,DirVarName] //to create the unique temporary ║ ║ │ │file. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To clear user's temporary folder or reset the position of user's temporary folder. ║ ║ │ │$:to set system variables as well. A directory cannot be contained at the end. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║TEMP│PARA│■Delete:to clear the temporary directory,@ indicates direct clearing without user's ║ ║ │ │ confirmation; Setting indicates resetting the position of the temporary directory. ║ ║ │ │■VarName:to return the old or newly-set temporary directory. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TEMP Delete or TEMP *del *tmpl:d:\A\B\CC*.txt *tmpfile ,&&FName,&&Dir ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Do not use this commmand in a config file.It is used only after the desktop is loaded and ║ ║ │ │ it reads the position of the temporary directory from the registry. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TEXT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TEXT[.] [Txt][#Color][LLeft][TTop][RRight][BBottom][=+-][$FontSize[:FontName]][*] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To display the text in the login sreen or desktop window.\n to break a line,and the suffix . ║ ║ │ │indicates not converting the newline in the raw mode. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■If Txt is null,the text in the lately-defined rectangle area will be cleared.The default ║ ║ │ │ color is white and the default coordinates is roughly at the top left corner. Ending with ║ ║ │ │ "*" indicates not clearing the originally displayed text before displaying the new. ║ ║ │ │ #LTRB=+- should be capitalized and the sequence cannot be changed. = indicates right ║ ║ │ │ aligned,+/- indcates horizontally/vertically center aligned. ║ ║TEXT├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TEXT Registering components……#0xFFDDDD L4 T720 R300 B768 $20 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command displays a multiline text. ║ ║ │ │☼The FontSize is 16 by default(equivalent to the typeface of Song,small number 5). ║ ║ │ │☼The specified position[left,top,right,bottom] is related to the length of the text and ║ ║ │ │ size of font. ║ ║ │ │☼This command will display the text on the login screen if it is used during login ║ ║ │ │ (in config file),and in the desktop window if it is used in Windows(after login). ║ ║ │ │ If params are absent,it will clear the last displayed text.If the text contains the ║ ║ │ │ characters #LTRB and they do not appear as params behind,they can be transfered to ║ ║ │ │ variables. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'THREAD' 'THRD' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│THREAD[&][*][+][$][#] ⌠-exp⌡ ⌠-wait[x][ -here]⌡ [-link] [--st:NumByteStack] CMDGroup ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ T │FUNC│To start a thread and run a command(group).Command line params with %n should not be used in ║ ║ H T│ │the command group.If needed,convert with ENVI. ║ ║ R H├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ E R│PARA│■Any valid command or command group.&:to force variables to be PE ones,which helps to ║ ║ A D│ │ achieve muitithread in the simplest way.&*+$ are not sequence sensitive.*/-link:to remain ║ ║ D │ │ the relationship of parent and child including the window,and the parent process cannot be ║ ║ │ │ operated until the subprocess is completed(Thread safety has already been supported by ║ ║ │ │ PECMD).The default separate mode indicates no relationship with each other.+ indicates the ║ ║ │ │ abandoned thread,ie,the program will not wait for its exit all along.$/-exp:to interpret ║ ║ │ │ the command group behind once in advance.-wait:to wait for the end of the thread(x:not ║ ║ │ │ to block), -here:as child of courrent PE stack (Only in this way can we operate tmpPeVar) ║ ║ │ │ . -tid:TidName. -htid:HandTidName -waitp:Wait for the thread before the process ends. ║ ║ │ │☼After a thread is created,%&&__LastTID% is the unique ID for the last created thread,and ║ ║ │ │ %&__TID% is the ID for current thread.CALL @~ CALL @^ MESS- ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│THREAD CALL Hello a1 a2 a3 ║ ║ │ │TEAM THREAD* CALL @Menu01| CALL @WIN1 //to open two windows simutaneously. ║ ║ │ │WAIT *syscmd THREAD# MESS bbbb //#:to start a thread in proxy mode.The proxy ║ ║ │ │exits if the thread ends. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TIME' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TIME [-t:[+]Times] [*] ,,[TimerEvent] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To create a timer in the window defined by _SUB. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│ * before TimerName indicates being automatically recycled before quitting the block or ║ ║ │ │ function. ║ ║ │ │■TimerName:string,should be unique and not the same as those of other controls or ║ ║ │ │ environment variables. ║ ║ │ │■TimerCyc:number,ms as the unit,>0 indicates the timer starts working immediately and 0 ║ ║ │ │ indicates the timer stops. ║ ║TIME│ │■TimerEvent:the command to execute when the timer is triggered,a valid one supported by ║ ║ │ │ WinCMD. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TIME Timer1,10000,FILE %TEMP%\*.* ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼TIME can be located beyond _SUB and _END to execute some commands. ║ ║ │ │☼The environment variable %TimerName% refers to the working status of the timer.0:stopped, ║ ║ │ │ not 0:started. ║ ║ │ │☼Use "ENVI @TimerName=0" to stop the timer,and use "ENVI @TimerName=TimerCyc[<;|,>Times]" ║ ║ │ │ to restart. ║ ║ │ │☼Use "ENVI @CtrlName.*del="(or "ENVI @TimerName=-del")to delete.After that a new one can be ║ ║ │ │ redefined. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'TIPS' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│TIPS[.*] [TipboxTitle],,[LifeMs],[PatrnID],[<@[A]TipboxPos>|[TrayIco]],[#WID] ║ ║ │ │TIPS#[.*][TipboxTitle],,#[LifeMs],[PatrnID],[<@[A]TipboxPos>|[TrayIcon]] ║ ║ │ │TIPS -dummy [?]Setting4Emu //Set or clear Setting4Emu. Needed only once. ? only for win10 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To display a bubble tip box in a specified position on the screen or in the tray.If all ║ ║ │ │params absent,invalid tray icons will be cleared.TIPS - indicates clearing the bubble tip ║ ║ │ │box.TIPS * indicates clearing the tray icons and bubble tip box.The suffix * indicates a ║ ║ │ │private control of TRAY in a window.If the tray is updated,the TrayIcon can be filled with ║ ║ │ │** and the original icon will remain unchanged. -w:Wait -f:show forcely on end of process ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■TipboxTitle:string,the text displayed on the title of the tip box.Its length cannot exceed ║ ║ │ │ 64 characters.The part of excess will be invalid. ║ ║ │ │■TipboxContent:string,the content of the text displayed on the tip box.Its length cannot ║ ║ │ │ exceed 256 characters,"\n" as the line break. ║ ║ │ │ "." indicates not converting \n. # indicates a necessary dilimiter,and the TipboxContent ║ ║ │ │ can be any character at this time. ║ ║ │ │■LifeSpan:number,the time for displaying the tip box(ms).If absent,10 seconds by default ║ ║ │ │ and the longest time for displaying is determined by the system. ║ ║ │ │■PattnID:number,0 by default(no icon),1(an information icon),2(a warning icon),3(an error ║ ║ │ │ icon),4 or above(tray icon). ║ ║TIPS│ │■TipboxPos:with the necessary "@",it indicates displaying the tip box in a specified ║ ║ │ │ position on the screen."A" indicates a tip box in the shape of arrow and if "A" is absent, ║ ║ │ │ it indicates a square one.The position is indicated as LxxTyy(xx,yy are numbers) and this ║ ║ │ │ param cannot be used together with "TrayIcon". ║ ║ │ │■TrayIcon:The format is "[FileName][#Num]".If "FileName" is absent,use the icon specified ║ ║ │ │ in the program resource of PECMD.EXE. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│TIPS Title,Content\nnewline permitted\nLine 3,5000,1,#1 or TIPS -dummy ?R*-20B*-20 or ║ ║ │ │TIPS Title,Content\nnewline permitted\nLine 3,5000,2,@aL600T400 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼The tray bubble tip box ends as PECMD ends. ║ ║ │ │☼The tip box on the screen ends as PECMD ends,so ensure that the life span of PECMD should ║ ║ │ │ be a bit longer than that of the tip box(use the command of WAIT to delay). ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'UPNP' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│UPNP [$] ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To execute the functions of BartPE.EXE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■"$" indicates displaying the executive interface of BartPE.EXE; ║ ║UPNP│ │■Command line params of BartPE.EXE. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│UPNP -pnp or UPNP $-pnp ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼This command is embedded with the executalbe codes of the new version of BartPE.EXE,and ║ ║ │ │ thus WinPE can fulfill the functions of BartPE.EXE without the file of BartPE.EXE; ║ ║ │ │☼This command only supports PE of NT5.x series and is executed in the blocking mode,ie the ║ ║ │ │ next command will not be executed until the preceding one is finished.Pay attention to the ║ ║ │ │ params and their case sensitiveness. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'USER' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│USER , ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the names of user and corporation in "Property" in the right click menu of ║ ║ │ │"My Computer". ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║USER│PARA│■The params are characters. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│USER mdyblog.blog.163.com,无忧启动论坛 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼If there exists a single-byte English "," ,it can be replaced with a Chinese double-byte ║ ║ │ │ one or transfered to a variable.This command is only applicable to a config file. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'WALL' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│WALL ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To set the wallpaper. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║WALL│PARA│■WallpaperFileName ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│WALL %CurDrv%\outpart\WallPage.JPG ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Supportive of environment variables and picture files in various formats. ║ ║ │ │ This command is applicable to both command line and config file. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'WAIT' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│WAIT [-sys[0]] [-pad] [-cont] [-ncd] [-freemem] [-][Time1(MS)][,VarName] ║ ║ │ │ [*[pid|=tid]] [Delay2(MS)] [-delms:ms] [-del FileDir1] [-del ...] ... [-cmd cmd] ║ ║ │ │WAIT -scanall [VarName] //to return the scan table of all 256 key values. ║ ║ │ │WAIT -sys[0] [switch/param] -cmd task_sys_proxy_command_args // async task mode. ║ ║ │ │WAIT -sys[0]cmd sys_proxy_command_args //direct command mode. 0:only on system level ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ │♫-cont:not to leave out the keys between two calls.Generally,at this time,wait -0 first and ║ ║ │ │ abandon the outcome. -pad:for 0-9 of NUM PAD ║ ║ │ │♫-ncd:not to transfer the current directory while waiting for the process or executing the ║ ║ │ │ command.(multithread) ║ ║ │ │♫"-":to stop waiting on receiving any key within the specified period of Time1.Otherwise ║ ║ │ │ waiting till time is out. freemem:free mem;alonely maybe ║ ║ │FUNC│ 1.to continue with the command after waiting for a specified Time1. ║ ║ │ │ 2.* indicates waiting for Time1 for the process with the process ID as "pid" to finish. ║ ║ │ │ (* without a number behind indicates a parent process,** grandparent process and so on; ║ ║ │ │ * with a number behind indicates this process, ** as its parent process and so on). ║ ║ │ │ *- or *0 or absent indicates no process to wait for.Then the specified file and ║ ║ │ │ directory will be deleted respectively and another command of PECMD can be executed ║ ║ │ │ after the process ends. -sys indicates the system proxy(indirect) mode,and an absolute ║ ║ │ │ path should be contained in the file name at this time.=tid indicates thread ID. ║ ║ │ │ $Handle indicates handle. ║ ║ │ │ -thread:Wait for all child thread. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PARA│■a specified time,MS as the unit. pid can be hex numbers. ║ ║WAIT├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│WAIT 5000 or WAIT 0,PKey or EXEC "%MyName%" WAIT * -del . or WAIT 0 *123 check process 123 ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼Eg,wait for a period of time after executing the command of SHELL and then execute the ║ ║ │ │ command of LOGO to close the login screen or perform other operations.Besides,if a program ║ ║ │ │ is really needed to be run after login,a shortcut can be created in the start group or ║ ║ │ │ "HKCU\Software\Microsoft\Windows\CurrentVersion\Run". ║ ║ │ │ WAIT will not block the graphic interface.The -del mode is applied to clearing temporary ║ ║ │ │ files(folder),which is retried regularly until it succeeds. ║ ║ │ │☼If Time1 is 0,it indicates there is a pause and the pause can be continued by pressing any ║ ║ │ │ key,thus the circulation goes on.WAIT 0/-N can be applied to checking the key pressed down ║ ║ │ │ by the user.'A'~'Z' or '0'~'9' will be returned directly,otherwise the key will be ║ ║ │ │ returned in the form of 0xNN.The variable name is PressKey by default.&&PressKey.Hex ║ ║ │ │ returns 0xNN or -1. ║ ║ │ │☼If 0"; +0 by ║ ║ │ │ default. ║ ║ │ │ "$":to unfold the environment variables in "FileData"; ║ ║ │ │ "+":to insert a line in the position of specified line ID with "FileData"; ║ ║WRIT│ │ "-":to deleted the line with the specified line ID; ║ ║ │ │ "+" and "-" absent:to replace the specified line with "FileData"; ║ ║ │ │ Line ID is indicated as a number, "0":to operate to the last line.If line ID is set ║ ║ │ │ unproperly,WinCMD will not perform any operation. ║ ║ │ │■FileData:string,data to insert or replace a certain line in the file with. ModiPos led by ║ ║ │ │ "$" indicates supporting environment variables interpretation. ║ ║ │ │ -UNICODE -UNICODEB -UTF8 are the file codes.If there exists BOM,the encoding is based ║ ║ │ │ on BOM.Other codes:-GBK -BIG5 -UNI -UNIBE -ANSI -code number ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │EXMP│WRIT C:\BOOT.INI,+0,C:\AVLDR.NT6=Window_7_PE or WRIT C:\BOOT.INI,+0,C:\AVLDR.NT5=Window_PE ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │☼WRIT is only applicable to modifying pure text files like CMD,BAT and menu config file; ║ ║ │ │ CONOUT$ indicates testing the terminal. ║ ║ │ │☼WRIT and LOOP should be in a separate line and should not be nested in such command as ║ ║ │ │ FIND,IFEX and TEAM. ║ ║ │ │☼Supportive: \\?\Harddisk0Partition2\A.TXT \\?\HarddiskVolume5\A.TXT \\?\ImDisk0\A.TXT ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'LineMergChar' ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FORM│ \ command sequence ║ ║ \ │ │The first non null character is \ in each line. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │FUNC│To merge the line into the previous one in case the line becomes too long. ║ ║ ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │REM │Null characters before \ will be abandoned,as well as the ones behind it if exist. ║ ╠════╪════╪═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DLL' PECMD.DLL DLL version of PECMD ║ ║ D ├────┼─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ L │FORM│CALL $**c **1 PECMD.DLL,main,command line or CALL $**1 PECMD.DLL,main_,command line ║ ║ L │ │rundll32.exe PECMD.DLL,main command line ║ ╠════╧════╧═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ Related materials for WINDOWS OS ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'Vkeylist' 'WINDOWS KeyValList' ║ ║-------------------------------------------------------------------------------------------------------║ ║1.Key Value(Virtual Key,is the key value redefined by windows,corresponding to wParam of WM_KEYDOWN) ║ ║ VKey KeyVal KeyVal│ Key KeyVal KeyVal│ Key KeyVal KeyVal ║ ║VK_LBUTTON 0x01 1 │ VK_PRINT 0x2A 42 │ VK_F9 0x78 120 ║ ║VK_RBUTTON 0x02 2 │ VK_EXECUTE 0x2B 43 │ VK_F10 0x79 121 ║ ║VK_CANCEL 0x03 3 │ VK_SNAPSHOT 0x2C 44 │ VK_F11 0x7A 122 ║ ║VK_MBUTTON 0x04 4 │ VK_INSERT 0x2D 45 │ VK_F12 0x7B 123 ║ ║VK_BACK 0x08 8 │ VK_DELETE 0x2E 46 │ VK_F13 0x7C 124 ║ ║VK_TAB 0x09 9 │ VK_HELP 0x2F 47 │ VK_F14 0x7D 125 ║ ║VK_CLEAR 0x0C 12 │ VK_0-VK_9 (0x30-0x39) 48- │ VK_F15 0x7E 126 ║ ║VK_RETURN 0x0D 13 │ VK_A-VK_Z (0x41-0x5A) 65- │ VK_F16 0x7F 127 ║ ║VK_SHIFT 0x10 16 │ VK_LWIN 0x5B 91 │ VK_F17 0x80 128 ║ ║VK_CONTROL 0x11 17 │ VK_RWIN 0x5C 92 │ VK_F18 0x81 129 ║ ║VK_MENU 0x12 18 │ VK_APPS 0x5D 93 │ VK_F19 0x82 130 ║ ║VK_ALT 0x12 18 │ VK_NUMPAD0 0x60 96 │ VK_F20 0x83 131 ║ ║VK_PAUSE 0x13 19 │ VK_NUMPAD1 0x61 97 │ VK_F21 0x84 132 ║ ║VK_CAPITAL 0x14 20 │ VK_NUMPAD2 0x62 98 │ VK_F22 0x85 133 ║ ║VK_KANA 0x15 21 │ VK_NUMPAD3 0x63 99 │ VK_F23 0x86 134 ║ ║VK_HANGEUL 0x15 21 │ VK_NUMPAD4 0x64 100 │ VK_F24 0x87 135 ║ ║VK_HANGUL 0x15 21 │ VK_NUMPAD5 0x65 101 │ VK_NUMLOCK 0x90 144 ║ ║VK_JUNJA 0x17 23 │ VK_NUMPAD6 0x66 102 │ VK_SCROLL 0x91 145 ║ ║VK_FINAL 0x18 24 │ VK_NUMPAD7 0x67 103 │ VK_LSHIFT 0xA0 160 ║ ║VK_HANJA 0x19 25 │ VK_NUMPAD8 0x68 104 │ VK_RSHIFT 0xA1 161 ║ ║VK_KANJI 0x19 25 │ VK_NUMPAD9 0x69 105 │ VK_LCONTROL 0xA2 162 ║ ║VK_ESCAPE 0x1B 27 │ VK_MULTIPLY 0x6A 106 │ VK_RCONTROL 0xA3 163 ║ ║VK_CONVERT 0x1C 28 │ VK_ADD 0x6B 107 │ VK_LMENU 0xA4 164 ║ ║VK_NONCONVERT 0x1D 29 │ VK_SEPARATOR 0x6C 108 │ VK_RMENU 0xA5 165 ║ ║VK_ACCEPT 0x1E 30 │ VK_SUBTRACT 0x6D 109 │ VK_PROCESSKEY 0xE5 229 ║ ║VK_MODECHANGE 0x1F 31 │ VK_DECIMAL 0x6E 110 │ VK_ATTN 0xF6 246 ║ ║VK_SPACE 0x20 32 │ VK_DIVIDE 0x6F 111 │ VK_CRSEL 0xF7 247 ║ ║VK_PRIOR 0x21 33 │ VK_F1 0x70 112 │ VK_EXSEL 0xF8 248 ║ ║VK_NEXT 0x22 34 │ VK_F2 0x71 113 │ VK_EREOF 0xF9 249 ║ ║VK_END 0x23 35 │ VK_F3 0x72 114 │ VK_PLAY 0xFA 250 ║ ║VK_HOME 0x24 36 │ VK_F4 0x73 115 │ VK_ZOOM 0xFB 251 ║ ║VK_LEFT 0x25 37 │ VK_F5 0x74 116 │ VK_NONAME 0xFC 252 ║ ║VK_UP 0x26 38 │ VK_F6 0x75 117 │ VK_PA1 0xFD 253 ║ ║VK_RIGHT 0x27 39 │ VK_F7 0x76 118 │ VK_OEM_CLEAR 0xFE 254 ║ ║VK_DOWN 0x28 40 │ VK_F8 0x77 119 │ VK_POWER 0xFF 255 ║ ║VK_SELECT 0x29 41 │ VK_LALT 0xA4 164 │ VK_RALT 0xA5 165 ║ ║-------------------------------------------------------------------------------------------------------║ ║//MENU key is the ALT key ║ ║VK_XBUTTON1 0x05 5 //Windows 2000/XP: X1 mouse button ║ ║VK_XBUTTON2 0x06 6 //Windows 2000/XP: X2 mouse button ║ ║-------------------------------------------------------------------------------------------------------║ ║Key Vkey KeyVal KeyVal AltStr1 AltStr2 AltStr3 AltStr4 ║ ║;: VK_COLON 0xBA 186 ;: ; : ║ ║=+ VK_EQU_ADD 0xBB 187 =+ = + ║ ║,< VK_LITTLE 0xBC 188 ,< , < ║ ║-_ VK_SUB_BUTTOM 0xBD 189 -_ - _ ║ ║.> VK_GREAT 0xBE 190 .> . > ║ ║/? VK_QUESTION 0xBF 191 /? / ? ║ ║`~ VK_SWAVE 0xC0 192 `~ ` ~ ║ ║[{ VK_PRESCRAP 0xDB 219 [{ [ { VK_[ ║ ║\| VK_PIPE 0xDC 220 \| \ | ║ ║]} VK_POSTSCRAP 0xDD 221 ]} ] } VK_] ║ ║'" VK_QOUTE 0xDE 222 '" ' " ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'fenqutype' 'operand of partition type' ║ ║-------------------------------------------------------------------------------------------------------║ ║2.operand of partition type,hex ║ ║ 0 NULL(to hide totally) 1c HIDE_Win95FAT32LBA 70 DiskSecure Mult bb Boot Wizard hid ║ ║ 1 FAT12 1e HIDE_Win95FAT16LBA 75 PC/IX be Solaris boot ║ ║ 2 XENIX root 24 NEC DOS 80 Old Minix c1 DRDOS/sec (FAT- ║ ║ 3 XENIX usr 39 Plan 9 81 Minix / old Lin c4 DRDOS/sec (FAT- ║ ║ 4 FAT16 <32M 3c PartitionMagic 82 LinuxSWAPPART c6 DRDOS/sec (FAT- ║ ║ 5 EXT PART 40 Venix 80286 83 Linux c7 Syrinx ║ ║ 6 FAT16 41 PPC PReP Boot 84 hideOS/2 C: da Non-FS data ║ ║ 7 HPFS/NTFS 42 SFS 85 LinuxEXTPART db CP/M / CTOS /HIDE_DELL ║ ║ 8 AIX 4d QNX4.x 86 NTFS volume set de Dell Utility ║ ║ 9 AIX bootable 4e QNX4.x 2nd part 87 NTFS volume set df BootIt ║ ║ a OS/2 Boot Manag 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access ║ ║ b Win95 FAT32 50 OnTrack DM 93 Amoeba/HIDE_Linu e3 DOS R/O ║ ║ c Win95 FAT32LBA 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor ║ ║ e Win95 FAT16LBA 52 CP/M 9f BSD/OS eb BeOS fs ║ ║ f Win95_EXT_PART_LBA 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT ║ ║10 OPUS 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/ ║ ║11 HIED_FAT12 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b ║ ║12 HIDE_FAT/Compaqdiagno 56 Golden Bow a7 NeXTSTEP f1 SpeedStor ║ ║14 HIDE_FAT16<32M 5c Priam Edisk a8 Darwin UFS f4 SpeedStor ║ ║16 HIDE_FAT16 61 SpeedStor a9 NetBSD f2 DOS secondary ║ ║17 HIDE_HPFS/NTFS 63 GNU HURD or Sys ab Darwin boot fd Linux raid auto ║ ║18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe LANstep ║ ║1b HIDE_Win95FAT 65 Novell Netware b8 BSDI swap ff BBT/XENIX bad blocks table ║ ║13 btron 2a atheOS AFS 2b Sylstor 32 NOS ║ ║35 JFSonos/2oreCS 7e linux 7f linu x d7 HIDE_DELL ║ ║dd HIDE_DELL ee PROTECTEDMBR ef EFI SYS_PART bc ATI_SEC_ZONE ║ ║fd Linux RAID fe SpeedStor ║ ║------------------------------- G P T PARTITION TYPE GUID ---------------------------------------------║ ║EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 MS Basic Data(NTFS/FAT32/FAT16/FAT12 share the same GUID) ║ ║024DEE41-33E7-11D3-9D69-0008C781F39F MBR partition scheme ║ ║C12A7328-F81F-11D2-BA4B-00A0C93EC93B EFI system ║ ║21686148-6449-6E6F-744E-656564454649 BIOS boot ║ ║E3C9E316-0B5C-4DB8-817D-F92DF00215AE Microsoft reserved ║ ║5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 LDM metadata ║ ║AF9B60A0-1431-4F62-BC68-3311714A69AD LDM data ║ ║DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Microsoft recovery ║ ║75894C1E-3AEB-11D3-B7C1-7B03A0000000 HP-UX data ║ ║E2A1E728-32E3-11D6-A682-7B03A0000000 HP-UX service ║ ║0FC63DAF-8483-4772-8E79-3D69D8477DE4 Linux data ║ ║A19D880F-05FC-4D3B-A006-743F0F84911E Linux RAID ║ ║0657FD6D-A4AB-43C4-84E5-0933C84B4F4F Linux swap ║ ║E6D6D379-F507-44C2-A23C-238F2A3DF928 LVM ║ ║8DA63339-0007-60C0-C436-083AC8230908 Linux reserved ║ ║83BD6B9D-7F41-11DC-BE0B-001560B84F0F FreeBSD boot ║ ║516E7CB4-6ECF-11D6-8FF8-00022D09712B FreeBSD data ║ ║516E7CB5-6ECF-11D6-8FF8-00022D09712B FreeBSD swap ║ ║516E7CB6-6ECF-11D6-8FF8-00022D09712B FreeBSD UFS ║ ║516E7CB8-6ECF-11D6-8FF8-00022D09712B FreeBSD vinum volume manager ║ ║516E7CBA-6ECF-11D6-8FF8-00022D09712B FreeBSD ZFS ║ ║48465300-0000-11AA-AA11-00306543ECAC Mac OS X (HFS+) ║ ║55465300-0000-11AA-AA11-00306543ECAC Mac OS X Apple UFS ║ ║6A898CC3-1DD2-11B2-99A6-080020736631 Mac OS X ZFS ║ ║52414944-0000-11AA-AA11-00306543ECAC Mac OS X Apple RAID ║ ║52414944-5F4F-11AA-AA11-00306543ECAC Mac OS X Apple RAID offline ║ ║426F6F74-0000-11AA-AA11-00306543ECAC Mac OS X Apple boot ║ ║4C616265-6C00-11AA-AA11-00306543ECAC Mac OS X Apple label ║ ║5265636F-7665-11AA-AA11-00306543ECAC Mac OS X Apple TV recpvery ║ ║6A82CB45-1DD2-11B2-99A6-080020736631 Solaris boot ║ ║6A85CF4D-1DD2-11B2-99A6-080020736631 Solaris root ║ ║6A87C46F-1DD2-11B2-99A6-080020736631 Solaris swap ║ ║6A8B642B-1DD2-11B2-99A6-080020736631 Solaris backup ║ ║6A898CC3-1DD2-11B2-99A6-080020736631 Solaris /usr ║ ║6A8EF2E9-1DD2-11B2-99A6-080020736631 Solaris /var ║ ║6A90BA39-1DD2-11B2-99A6-080020736631 Solaris /home ║ ║6A9283A5-1DD2-11B2-99A6-080020736631 Solaris EFI_ALTSCTR ║ ║6A945A3B-1DD2-11B2-99A6-080020736631 Solaris reserved1 ║ ║6A9630D1-1DD2-11B2-99A6-080020736631 Solaris reserved2 ║ ║6A980767-1DD2-11B2-99A6-080020736631 Solaris reserved3 ║ ║6A96237F-1DD2-11B2-99A6-080020736631 Solaris reserved4 ║ ║6A8D2AC7-1DD2-11B2-99A6-080020736631 Solaris reserved5 ║ ║49F48D32-B10E-11DC-B99B-0019D1879648 NetBSD swap ║ ║49F48D5A-B10E-11DC-B99B-0019D1879648 NetBSD FFS ║ ║49F48D82-B10E-11DC-B99B-0019D1879648 NetBSD LFS ║ ║49F48DAA-B10E-11DC-B99B-0019D1879648 NetBSD RAID ║ ║2DB519C4-B10F-11DC-B99B-0019D1879648 NetBSD concatenated ║ ║2DB519EC-B10F-11DC-B99B-0019D1879648 NetBSD encypted ║ ║53746F72-6167-11AA-AA11-00306543ECAC Apple Core Storage (i.e. Lion FileVault) partition ║ ║7C3457EF-0000-11AA-AA11-00306543ECAC APFS(Apple File System) ║ ║-------------------------------------------------------------------------------------------------------║ ║ѺThere is no difference in mounting partitions with this PECMD and SHOW except partition 0 and the ║ ║ extended partition.Numbers are consulted by users and offer a hint to the automated program.So it is ║ ║ understandable for me to add some more. ║ ║ 15 HiddenExtPart 1f HiddenWin95ExtPartLBA 95 HiddenLinuxExtPart ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'disktype' 'DiskMediaType' ║ ║-------------------------------------------------------------------------------------------------------║ ║ѺAre there any ways to obtain the original file system and the rest space of the partition with the ║ ║ partition ID as 0x12? ║ ║ If the partition is not mounted,first mount with the command of SUBJ temporarily and then query with ║ ║ "FIND" and "IFEX",like: ║ ║ FIND C:\=?,VarName //to query the whole space bytes. ║ ║ IFEX C:\=?,VarName //to query the rest of space bytes. ║ ║-------------------------------------------------------------------------------------------------------║ ║3.DiskMediaType: HEX DEC DiskMediaType: HEX DEC DiskMediaType: HEX DEC ║ ║ Unknown = 0x00, 0 F5_180_512 = 0x09, 9 F3_1Pt23_1024 = 0x12, 18 ║ ║ F5_1Pt2_512 = 0x01, 1 F5_160_512 = 0x0a, 10 F5_1Pt23_1024 = 0x13, 19 ║ ║ F3_1Pt44_512 = 0x02, 2 RemovableMedia = 0x0b, 11 F3_128Mb_512 = 0x14, 20 ║ ║ F3_2Pt88_512 = 0x03, 3 FixedMedia = 0x0c, 12 F3_230Mb_512 = 0x15, 21 ║ ║ F3_20Pt8_512 = 0x04, 4 F3_120M_512 = 0x0d, 13 F8_256_128 = 0x16, 22 ║ ║ F3_720_512 = 0x05, 5 F3_640_512 = 0x0e, 14 F3_200Mb_512 = 0x17, 23 ║ ║ F5_360_512 = 0x06, 6 F5_640_512 = 0x0f, 15 F3_240M_512 = 0x18, 24 ║ ║ F5_320_512 = 0x07, 7 F5_720_512 = 0x10, 16 F3_32M_512 = 0x19 25 ║ ║ F5_320_1024 = 0x08, 8 F3_1Pt2_512 = 0x11, 17 ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ PECMD2012 - related materials of the interpreter ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'' 'script converted to a command line' ║ ║-------------------------------------------------------------------------------------------------------║ ║1.the way to convert a script to a command line: ║ ║ 1>eliminate all the notes first.2>replace all "space; ; space" with "space; ; ; space"(if there are ║ ║ more"; ",add one more "; "). 3>replace all newlines with "space; ; space"(Space only refers to ║ ║ 0x20).Add one more switch of "/L " before it(indicating multiline and lower case permitted).These ║ ║ are the new command line params.The switch /L will not be transfered to the program as a param. ║ ║ The first line is treated as params of the program./l:the first line is treated as commands as well║ ║ . /L:commands start from the second line. ║ ║Δcommand line on line,press Ctrl-Enter and execute the script(in the memory).Click the number below ║ ║ to change the height. ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'' 'Note' ║ ║-------------------------------------------------------------------------------------------------------║ ║2.note character:"" or "`" or "//",and there is a null character at the head of line or the beginning ║ ║ of the note and the null character is treated as part of the note. ║ ║ΔHow to input the null character at the end of the line? USe the command of TEAM and put a | and the ║ ║ next command behind the space at the end of the line.It is also practicable to put only one |.Or the ║ ║ last part can be transfered to a varriale like %SPACE%. ║ ║ΔNotes are disalbed in a command line by default while enalbed in a config file by default. ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'' 'embed and initialize script' ║ ║-------------------------------------------------------------------------------------------------------║ ║3.1.to initialize the script:the script in the resourc of the program SCRIPTINIT\100\2052. When start ║ ║ the program,initialization will be automatically executed before the normal process. ║ ║3.2.to embed a script:add the script directly to the resource SCRIPT\101\2052.It will be automatically ║ ║ executed and exit when the program is started and the command line params will be recognized as the║ ║ ones of the script. ║ ║ to add more embedded script:use the command of "LOAD",like:LOAD #102 A B or LOAD #103 ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'ICOLIST' 'IconID' ║ ║-------------------------------------------------------------------------------------------------------║ ║4.IconID ║ ║ #2:naturalID,the internal group ID will be renumbered respectively from 0.(Icon Group) ║ ║ ##2:internal group ID(Icon Group) [If the file name is absent,#1 is opposite to ##1] ║ ║ ###2:internal IconId(Icon) ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'' 'plugin' ║ ║-------------------------------------------------------------------------------------------------------║ ║5.plugin ║ ║1> plugin type ║ ║(1)script: #ID WCI WCS WCE WCZ ...(including user-defined format) ║ ║(2)executable file:EXE COM NTR NTE CMD BAT ║ ║(3)DLL: DLL DLX ║ ║-------------------------------------------------------------------------------------------------------║ ║2> initialize ║ ║ENVI &&&LoadPlugin=[BasicFileName] ║ ║BasicFileName is the name of this PECMD by default. ║ ║BasicFileName is automatically extended to a full path BasicFileName2. ║ ║Suppose BasicFileName2 is X:\windows\system32\pecmd.exe, ║ ║the reference path X:\windows\system32\pecmd ║ ║will be executed only once when initialization is performed many times. ║ ║It can be placed in the startup script to be automatically initialized. ║ ║-------------------------------------------------------------------------------------------------------║ ║3.1> embedded script ║ ║internal resource ID beneath SCRIPT.The script can be a script file compressed by the command of CMPS.║ ║internal plugin list:resource INDATA\4 ║ ║format: ║ ║LOAD: CMDName #ID[+Offset[+LenLimit] ║ ║ ║ ║The internal plugin list can be compressed by CMPS. ║ ║ ║ ║LOAD: HELLOIN #100 ║ ║The command is: HELLOIN ║ ║HELLOIN A B C ║ ║will execute the embedded script #100,with the param " A B C" ║ ║-------------------------------------------------------------------------------------------------------║ ║3.2> script ║ ║RefPath.CMD[+Offset[+LenLimit]].Suffix ║ ║Suffix:WCI WCS WCE WCZ ║ ║X:\windows\system32\pecmd.HELLO.WCZ ║ ║The command is:HELLO ║ ║-------------------------------------------------------------------------------------------------------║ ║4> executable file ║ ║RefPath.ExecMarkCMD.Suffix ║ ║Suffix:EXE COM NTR NTE CMD BAT ║ ║NTR,NTE are renamed from EXE or COM ║ ║ExecMark:combinations of =!@ ║ ║X:\windows\system32\pecmd.=!HELLO2.EXE ║ ║The command is:HELLO2 ║ ║automatically in the hidden-waiting mode ║ ║-------------------------------------------------------------------------------------------------------║ ║5> DLL ║ ║RefPath.$CMD.Suffix ║ ║Suffix:DLL DLX ║ ║DLX is renamed from DLL ║ ║X:\windows\system32\pecmd.$HELLO3.DLL ║ ║The command is:HELLO3 ║ ║-------------------------------------------------------------------------------------------------------║ ║6> PECMD special plugin library ║ ║RefPath.pecmdplugin.*.PEI ║ ║ ║ ║The command name list is in the PEI file. ║ ║RefCode:PECMD_PLUGIN.PluginCode.ZIP ║ ║ ║ ║priority to execute: ║ ║PECMD special plugin library ║ ║#Number ║ ║WCI WCS WCE WCZ ║ ║EXE COM NTR NTE BAT CMD ║ ║DLL ║ ║not to continue searching if found. ║ ║ ║ ║ΔPlugins are prior to the external commands without EXEC and wcs script file without LOAD. ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DIYSIZE' 'DiyDragDrop' ║ ║-------------------------------------------------------------------------------------------------------║ ║ΔIf you need to contract the occupied disk space,the help document(a bit larger) can be removed from ║ ║ the resource without influencing the execution.It will not occupy the memory if not removed. ║ ║ΔThe script can be dragged to the command line for editing and dragged to the HELP zone,it will be ║ ║ displayed and executed(compressible). ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'DIYPE' 'PEDIY' ║ ║-------------------------------------------------------------------------------------------------------║ ║Ѻessential materials for PE DIY ║ ║ to acquire the authority. ║ ║ Add the authority administration first and acquire the "authority of administrator" when you are ║ ║ about to make PE.--aiming at win7/win8 PE. ║ ║ Suppose PE is mounted to the host Z:\PEDir. ║ ║ to execute in command line:takeown /f "Z:\PE" /r /d y & icacls "Z:\PE" /grant administrators:F /t ║ ║ (to make sure that there exist two commands of takeown and icacls in the system.If not,they can be ║ ║ copied from a normal system.) ║ ║ *Mostly it is due to FAT32 file system that the authority problem above results in the failure of ║ ║ installing and registering *.DLL or driver. ║ ║ Please pay attention whether the file system is NTFS or FAT32 when you are making PE. ║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝ ----------------------------------------------Dividing Line--------------------------------------------- ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ Special statement about PECMD - WinPE Commander ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │ 'THX' ║ ║ ├────┴─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │ѺThanks to Lxl1638 for his source code of PECMD2.4. PECMD2012 is redesigned with reference to it. ║ ║ │ѺThanks to Yonsm for his source code of XCMD.PECMD is improved to perfection based on XCMD V2.2. ║ ║ │ѺThanks to friends from Wuyou BBS for their suggestions. ║ ║THX │ѺThanks to Wuyou BBS for providing the place for discussion. ║ ║ │ѺThanks to qinjg8008 for his source code to set the virtual memory. ║ ║ │ѺThanks to Sherpya for his source code of XPE Plugin. ║ ╠════╤════╤═════════════════════════════════════════════════════════════════════════════════════════════╣ ║ │CMD │'Permission' ║ ║ ├────┴─────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PECMD2012 NonCopyRight Permission: ║ ║ │ѺAny individual or organization(including commercial ones) can use it freely.It is a reverse ║ ║ │ engineering and can be modified in binary... ║ ║ │ѺIf you have used or modified any source code of it,it is strongly suggested that the projects ║ ║ │ employing these source codes,as well as the code in them,should be brought to public. ║ ║ │ It is permitted that the source code is not open to some commercial organizations,yet its ║ ║ │ development interface and documents are obligated to. ║ ║ │ѺKeep their versions consistent as possible. ║ ║ │ѺNo such restrictions for internal use only. ║ ║ │ DSystem mdyblog.blog.163.com 2012.1.22 ║ ║ ├──────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ │PECMD2.4 Permission: ║ ║PERM│ѺThis application as well as its source code is available freely. ║ ║ │ѺIf you have used or modified any source code of it,it is demanded that the projects employing ║ ║ │ these source codes,as well as the code in them,should be brought to public.Otherwise,you are not║ ║ │ permitted to use any part of the source code. ║ ║ │ѺUnlimited number of copies of this application can be duplicated,distributed and spread as long ║ ║ │ as it is ensured that each copy,each time of distribution and spreading are complete and real, ║ ║ │ including its programs,electric documents,copyright and trademark declaration. ║ ║ │ѺA statement is made hereby that the author of the application is not oligated to ensure its ║ ║ │ applicability or give any guarantee that no breakdown arises during its use,nor responsible for ║ ║ │ any theoretical or practical loss brought about to any user by using it. ║ ║ │ѺIf you use this application,it indcates that you have accepted this agreement tacitly. ║ ║ │ѺFor more information,please access: WWW.YONSM.NET,BBS.WUYOU.COM. ║ ║ │ ║ ║ │Yonsm Lxl1638 ║ ║ │Yonsm@163.com Lxl1638@21cn.com ║ ║ │WWW.Yonsm.NET BBS.WUYOU.COM ║ ║ │2007.1.24,Hangzhou 07.03.01,Maoming No.2 High School║ ╚════╧══════════════════════════════════════════════════════════════════════════════════════════════════╝ DSystem mdyblog.blog.163.com ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ѺTo show your benevolence,please support donation to PECMD,WinCMD,WimTool ║ ║ ║ ║ PECMD,WinCMD and WimTool are the free tools created for WinPE by DSystem,Lxl1638(Li Shiting) and ║ ║Yonsm in recent years.PECMD has been a login command and a command interpreter for WinPE both at home ║ ║and abroad.WinCMD can also be used as an alternative command interpreter of a normal OS to strengthen ║ ║and supplement the functions of the batch script. ║ ║ If you think that these tools are of practical use in system installation and maintenance and are ║ ║not bothered,please donate to PECMD,WinCMD and WimTool. ║ ║ ║ ║For the customized version of Li, ║ ║please pay to :6227 0031 4206 0043 437 Li Shiting Maoming local branch,Guangdong branch, ║ ║ China Construction Bank ║ ║Email address :lxl1638@21cn.com ║ ║Time to finish: ║ ║ For the individual and professional version of Li,I will finish it within 2 weekdays on receiving ║ ║your email. ║ ║ For the group version of Li,I will finish it within one week on receiving your email. ║ ║ For the customized version of Li,I will assess the practicability of the task and fix the finish ║ ║time according to its difficulty. ║ ║ ║ ║ Thanks to the bbs administrators and those who offer their suggestions,ideas and other information ║ ║to PECMD,WinCMD and WimTool. ║ ║ Thank you for your support and donation to PECMD,WinCMD and WimTool. ║ ║ Thanks to all the users of PECMD,WinCMD and WimTool!Happy New Year to you and every wish comes true!║ ║ ║ ║ You are now using a free version of PECMD2012,which does not have any function restriction or mark. ║ ║ ║ ║ Li Shiting,before the Spring Festival of 2010║ ║ (appropriately modified by DSystem,and once more by 988668 on July 13th,2012)║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝