脚本

脚本 | 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 (整数) - 表明在”大小小于“字段中输入的值。

Copyright © 2013 Mythicsoft Ltd. All rights reserved.
Help file version: 7.0
PDF and CHM versions of this help file are available here:
http://mythicsoft.com/filelocatorpro/help