|
本人也来一个让大家试试:
1、可以搜索所有的子目录
2、可以建立指定文件类型(如EXE、CMD、BAT、WIM等)的快捷方式
3、纯PECMD命令,没有调用CMD或第三方工具,高率快速
4、精简完善的代码见最后,搜索所有指定类型的文件用同一个子过程
////////////////////////////////////////////////////////////
//注释内容为下一行命令的功能
//去掉蓝色命令的注释后建立的快捷方式可不带扩展名
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//建立快捷方式
_SUB CreateShortCut
//取当前目录名(后面加了一个'\')的长度
STRL iCurDir=%CurDir%\
//取搜索的文件名的长度
STRL iFile=%AnyFile%
//取文件扩展名(不带".")
//FEXT sExt=%AnyFile%
//取文件扩展名长度(前面带有".")
STRL iExt=.%sExt%
//文件名长度减去当前目录名长度
CALC #iShort=%iFile%-%iCurDir%
//取相对于当前目录的文件名(即快捷方式名称,含扩展名)
RSTR sShort=%AnyFile%,%iShort%
//取相对文件基本名的长度(含相对路径,不带扩展名)
//CALC #iShort=%iShort%-%iExt%
//快捷方式名称(无扩展名)
//LSTR sShort=%sShort%,%iShort%
//建立快捷方式
LINK %Programs%\外置程序\%sShort%,%AnyFile%
_END
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//搜索所有的EXE文件
_SUB SearchEXE
//搜索所有的EXE文件,并调用CreateShortCut建立快捷方式
FORX %AnyPath%\*.EXE,AnyFile,0,CALL CreateShortCut
//搜索所有的下级目录,并递归调用SearchEXE搜索所有的EXE文件
FORX @%AnyPath%\*.*,AnyPath,0,CALL SearchEXE
_END
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//搜索所有的CMD文件
_SUB SearchCMD
//搜索所有的CMD文件,并调用CreateShortCut建立快捷方式
FORX @%CurDir%\*.CMD,AnyFile,0,CALL CreateShortCut
//搜索所有的下级目录,并递归调用SearchEXE搜索所有的CMD文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchCMD
_END
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//搜索所有的BAT文件
_SUB SearchBAT
//搜索所有的BAT文件,并调用CreateShortCut建立快捷方式
FORX @%CurDir%\*.BAT,AnyFile,0,CALL CreateShortCut
//搜索所有的下级目录,并递归调用SearchEXE搜索所有的BAT文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchBAT
_END
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//搜索所有的WIM文件
_SUB SearchWIM
//搜索所有的WIM文件,并调用CreateShortCut建立快捷方式
FORX @%CurDir%\*.WIM,AnyFile,0,CALL CreateShortCut
//搜索所有的下级目录,并递归调用SearchEXE搜索所有的WIM文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchWIM
_END
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//主体执行流程
////////////////////////////////////////////////////////////
//搜索当前目录的所有子目录,并调用SearchEXE搜索其下的EXE文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchEXE
//搜索当前目录的所有子目录,并调用SearchEXE搜索其下的CMD文件
//FORX @%CurDir%\*.*,AnyPath,0,CALL SearchCMD
//搜索当前目录的所有子目录,并调用SearchEXE搜索其下的BAT文件
//FORX @%CurDir%\*.*,AnyPath,0,CALL SearchBAT
//搜索当前目录的所有子目录,并调用SearchEXE搜索其下的WIM文件
//FORX @%CurDir%\*.*,AnyPath,0,CALL SearchWIM
////////////////////////////////////////////////////////////
以下是911外置及效果图
//精简完善的代码
/////////////////////////////////////////////////////////////////
//注释内容为下一行命令的功能
//去掉蓝色命令的注释后建立的快捷方式可不带扩展名
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//建立快捷方式
_SUB CreateShortCut
//取当前目录名(后面加了一个'\')的长度
STRL iCurDir=%CurDir%\
//取搜索的文件名的长度
STRL iFile=%AnyFile%
//取文件扩展名(不带".")
//FEXT sExt=%AnyFile%
//取文件扩展名长度(前面带有".")
STRL iExt=.%sExt%
//文件名长度减去当前目录名长度
CALC #iShort=%iFile%-%iCurDir%
//取相对于当前目录的文件名(即快捷方式名称,含扩展名)
RSTR sShort=%AnyFile%,%iShort%
//取相对文件基本名的长度(含相对路径,不带扩展名)
//CALC #iShort=%iShort%-%iExt%
//快捷方式名称(无扩展名)
//LSTR sShort=%sShort%,%iShort%
//建立快捷方式
LINK %Programs%\外置程序\%sShort%,%AnyFile%
_END
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//搜索所有指定类型的文件
_SUB SearchFile
//搜索所有指定类型的文件,并调用CreateShortCut建立快捷方式
FORX %AnyPath%\%FileType%,AnyFile,0,CALL CreateShortCut
//搜索所有的下级目录,并递归调用SearchFile搜索所有指定类型的文件
FORX @%AnyPath%\*.*,AnyPath,0,CALL SearchFile
_END
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//主体执行流程
/////////////////////////////////////////////////////////////////
//设置文件扩展名为"*.EXE"
ENVI FileType=*.EXE
//搜索当前目录的所有子目录,并调用SearchFile搜索其下指定类型的文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchFile
//设置文件扩展名为"*.CMD"
ENVI FileType=*.CMD
//搜索当前目录的所有子目录,并调用SearchFile搜索其下指定类型的文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchFile
//设置文件扩展名为"*.BAT"
ENVI FileType=*.BAT
//搜索当前目录的所有子目录,并调用SearchFile搜索其下指定类型的文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchFile
//设置文件扩展名为"*.WIM"
ENVI FileType=*.WIM
//搜索当前目录的所有子目录,并调用SearchFile搜索其下指定类型的文件
FORX @%CurDir%\*.*,AnyPath,0,CALL SearchFile
/////////////////////////////////////////////////////////////////
[ 本帖最后由 lxl1638 于 2009-4-27 01:46 编辑 ] |
|