脚本

Top  Previous  Next

FileLocator Pro 支持使用活动脚本来定制搜索引擎的文件名称和内容的匹配算法。

 

ScriptingTab

 

当用户启动一次搜索,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 © 2021 Mythicsoft Ltd. All rights reserved.
Help file version: 9.0

PDF and CHM versions of this help file are available here:
http://mythicsoft.com/filelocatorpro/help