|
五子登科【20120512】更新:
老九版PECMD.EXE的FORX命令一直不甚完美:当系统中有驱动器中无盘(例如多功能读卡器、空A驱等),就会报错,由于无忧老九不再更新PECMD.EXE了,我们只能变着法子来修正这个小问题。我写了个SERCHFDV.EXE,来替代PECMD.EXE FORX 命令的功能。很不幸,这个程序体积大了点:ASPACK压缩后都有40KB+。
如果文件目录名带空格,请用双引号包围起来,没有空格的话,可以不用双引号。在简体中文03PE、7PE下测试通过。
例子一:(搜文件)
SERCHFDV.EXE “AB C\FFF.EXE”
在所有存在的逻辑盘中搜索文件“AB C\FFF.EXE”,若找到了,就把所找到的盘符字母写到注册表“HKCU\software\PH7PE\Outdrive”,例如存在C:\AB C\FFF.EXE及T:\AB C\FFF.EXE,则HKCU\software\PH7PE\Outdrive=CT
例子一:(搜目录)
SERCHFDV.EXE "ABC\FF FGH" DIR
在所有存在的逻辑盘中搜索目录 ABC\FF FGH,若找到了,就把所找到的盘符写到注册表“HKCU\software\PH7PE\Outdrive”。
通过PECMD的REGI读取上述键值,就能应用了。
以下是不会触发“驱动器未准备好”报错的应用举例:
这一段在pecmd.ini-
- TEAM ENVI WS=%WINDIR%\SYSTEM32\|ENVI File1=PETOOLS
- EXEC =!SERCHFDR.EXE %File1% DIR
- REGI $HKCU\software\PH7PE\OutDrive,OutDrive
- MSTR adrv=1,1,%OutDrive%
- FORX @%adrv%:\%File1%,TOOLS,1,Link %desktop%\启用PETOOLS,PECMD.EXE,LOAD %WS%petool.ini,shell32.dll#103
复制代码 以下是%WINDIR%\SYSTEM32\PEtools.ini-
- ENVI File1=PETOOLS
- EXEC =!SERCHFDR.EXE %File1% DIR
- REGI $HKCU\software\PH7PE\OutDrive,OutDrive
- STRL mutid=%OutDrive%
- ENVI Number=1
- LOOP #%Number%>%mutid%,!CALL M0
- file %desktop%\启用PETOOLS.lnk
- _SUB M0
- MSTR adrv=%Number%,1,%OutDrive%
- FORX @%adrv%:\%File1%,TOOLS,1,Call M
- CALC Number=%Number%+1
- _END
- _SUB M
- lstr D=1,%TOOLS%
- ENVI V00O=%StartMenu%\%D%盘PETools
- LINK %V00O%\target,%TOOLS%
- FILE %WINDIR%\SYSTEM32\Desk.ini=>%V00O%\Desktop.ini
- SITE %V00O%\*.*,+A+H+S
- SITE %V00O%,+R+S
- ENVI V00O=
- FORX %TOOLS%\*.INI,T,0,TEAM LOAD %T%|ENVI T=
- ENVI D=
- _END
复制代码
[ 本帖最后由 chiannet 于 2012-6-7 21:14 编辑 ] |
|