脚本 |
Top Previous Next |
FileLocator Pro 支持使用活动脚本来定制搜索引擎的文件名称和内容的匹配算法。
当用户启动一次搜索,FileLocator Pro将: •了解是否可有脚本启用。 •根据“引擎”输入框内输入的程序号(Prog Id)对每个脚本创建活动脚本引擎。 •将脚本载入脚本引擎。
一旦载入了脚本,根据脚本的类型不同FileLocator Pro将调用脚本中具体函数: •如果是一个“文件名称”脚本,那么调用的函数为 'isValidFileName',并且传递文件路径和文件名称参数。 •如果是一个“包含文本”脚本,那么调用的函数为 'isValidLine',并且传递行号和文本参数。
仅当满足了搜索条件,即文件名称或包含文本的表达式时才会调用脚本。函数会返回一个布尔值true或false来表明文件或行号是否有效。
示例:
注:请查看FileLocator Pro 主安装目录下的“Sample Scripts”子目录,了解一些提供的脚本样例。
只读 脚本
以下示例显示一个样例文件名称脚本将返回的文件限定为指定了“只读”属性的文件。注:可使用其它属性,如使用‘32’而不是‘1’来查找指定了“归档”属性的文件。
var objFSO = new ActiveXObject( "Scripting.FileSystemObject" );
function isValidFileName( strPath, strFileName ) { var bIsValid = false; try { var objFile = objFSO.GetFile( strPath + strFileName ); bIsValid = ( objFile.Attributes & 1 ); } catch( e ) {} return bIsValid; }
注意try...catch 用于预防异常信息被返回给搜索引擎。如果出现异常而且没有被脚本捕获,那么搜索引擎就会停止。
仅为文件夹 脚本
另一个如何查找仅为文件夹的示例。
var objFSO = new ActiveXObject( "Scripting.FileSystemObject" );
function isValidFileName( strPath, strFileName ) { var bIsValid = false; try { bIsValid = objFSO.FolderExists( strPath + strFileName ); } catch( e ) {} return bIsValid; }
NOT表达式 脚本
下面的示例是如何使用JSscriptd自身的正则表达式引擎在内容匹配时运用NOT(要匹配的NOT表达式从”脚本“页签中“包含文本”的”参数“输入框中输入)
// An example of a NOT expression, this time using JScript's built in Regular Expression object.
var regExp = new RegExp( SearchParms.ContainingTextCustomParm );
function isValidLine( nLineNum, strText ) { var bIsValid = true; try { bIsValid = !regExp.test( strText ); } catch( e ) {} return bIsValid; }
注意正则表达式对象是如何在函数体外部创建的,这样对任何一个搜索虽然可能被调用多次却只会被创建和编译一次。
排除目录
NOT表达式的一个变化是从搜索中排除某些目录。例如:要从搜索中排除WIndows目录,用于路径的NOT表达式就是 'C:\\Windows' 。下面的示例是如何在进行路径匹配时运用NOT(要匹配的NOT表达式从“脚本“页签中”文件名称“的”参数“输入框中输入)。
// An example of a NOT expression on a file's pathname // using JScript's built in Regular Expression object.
var regExp = new RegExp( SearchParms.FilenameCustomParm );
function isValidFileName( strPath, strFileName ) { var bIsValid = true; try { bIsValid = !regExp.test( strPath ); } catch( e ) {} return bIsValid; }
注意在'C:\\Windows'中使用了双个反斜杠'\' 代表单个反斜杠'\' ,因为反斜杠字符在正则表达式中是特殊的转义符。
搜索参数对象
通过对象'SearchParms'脚本几乎可对其它所有条件进行访问。例如,isValidFileName脚本中可以像这样来使用”脚本页签“中输入的参数:
var strCustom = SearchParms.FilenameCustomParm;
SearchParms提供了对以下条件的访问:
CurrentFileName (字符串) - 当前正在处理的文件名。
CurrentFilePath (字符串) - 当前正在处理的文件的路径。
ContainingText (字符串) - 在“包含文本”字段中输入的值。
ContainingTextCustomParm (字符串 ) - 对包含文本脚本在“参数”字段中输入的值
ContainingTextRegExp (布尔) - 表明“包含文本”的正则表达式类型是否已打开。
EOLUnix (布尔) - 表明是否打开了UNIX行终止符选项。
EOLMac (布尔) - 表明是否打开了Mac行终止符选项。
Filename (字符串) - 在“文件名称”字段中输入的值。
FilenameCustomParm (字符串) - 对文件名称脚本在“参数”字段中输入的值。
FilenameExcludeExp (布尔) - 表明“指定NOT表达式”是否已打开。
FilenameRegExp (布尔) - 表明“文件名称”的正则表达式是否已打开。
LookIn (字符串) - 在“查找位置”字段中输入的值。
MatchFilenameCase (布尔) - 表明对文件名称的匹配大小写选项是否已打开。
MatchContentsCase (布尔) - 表明对”包含文本“的匹配大小写选项是否已打开。
ModifiedAfter (日期) - 在“修改时间晚于”字段中输入的值。
ModifiedBefore (日期) - 在“修改时间早于”字段中输入的值。
SearchContents (布尔) - 表明搜索是否为搜索文件的内容。
SearchOnePhase (布尔) - 表明“单阶段搜索”是否已打开。
SearchSubFolders (布尔) - 表明“搜索子文件夹”是否已打开。
SizeMoreThan (整数) - 表明在“大小大于”字段中输入的值。
SizeLessThan (整数) - 表明在“大小小于”字段中输入的值。 |