# 脚本 | 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 © 2023 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