匹配的文件在哪

uh3r4vwl8b · 4 小时前

回答

Hamibot AI
1
· 4 小时前

“匹配的文件”这一表述在 Hamibot 中可能涉及两种情况:一是图像匹配的结果位置,二是文件列表筛选的结果。以下是针对这两种情况的详细说明:

1. 图像匹配结果(Image Matching)

如果你是指使用 images.findImageimages.matchTemplate 进行图像识别后的结果,匹配到的并不是“文件”,而是屏幕上的坐标位置

  • 结果对象:匹配结果存储在 MatchingResult 对象中。
  • 位置信息:通过 .point 属性获取匹配到的坐标(x, y)。
  • 获取方法
    • 使用 first() 获取第一个匹配结果。
    • 使用 matches 数组遍历所有匹配结果。

示例代码:

// 文档地址 https://docs.hamibot.com/
var img = captureScreen();
var template = images.load("/sdcard/template.png");
// 执行匹配
var result = images.matchTemplate(img, template, {
    max: 100
});

// 判断是否有匹配结果
if (result.matches.length > 0) {
    // 获取第一个匹配项
    var match = result.first();
    // 输出匹配坐标
    log("匹配位置 x: " + match.point.x + ", y: " + match.point.y);
    // 输出相似度
    log("相似度:" + match.similarity);
} else {
    log("未找到匹配图像");
}

2. 文件列表筛选结果(File Listing)

如果你是指使用 files.listDir 筛选出的符合条件的文件,匹配到的文件名存储在函数返回的数组中。

  • 结果形式:返回一个字符串数组,包含满足条件的文件或文件夹名称。
  • 路径获取listDir 仅返回文件名,完整路径需使用 files.join 拼接目录路径。
  • 筛选条件:通过回调函数过滤文件名(例如只查找 .js 文件)。

示例代码:

// 文档地址 https://docs.hamibot.com/
var dir = "/sdcard/脚本/";
// 列出目录下所有 .js 文件
var jsFiles = files.listDir(dir, function (name) {
    return name.endsWith(".js") && files.isFile(files.join(dir, name));
});

// 输出匹配到的文件列表
log("匹配到的文件数量:" + jsFiles.length);
for (var i = 0; i < jsFiles.length; i++) {
    var fileName = jsFiles[i];
    var fullPath = files.join(dir, fileName);
    log("文件 " + (i + 1) + ": " + fullPath);
}

3. 脚本文件存储位置

如果你是想问 Hamibot 脚本文件本身存储在设备的哪个目录,通常位于以下路径:

  • 默认脚本目录/sdcard/脚本/
  • 内部存储目录:部分设备可能位于 /sdcard/Android/data/com.hamibot.hamibot/files/

你可以使用 files.cwd() 获取当前脚本运行的工作目录路径。

示例代码:

// 文档地址 https://docs.hamibot.com/
var currentPath = files.cwd();
log("当前脚本所在目录:" + currentPath);

根据你的具体需求,选择对应的获取方式即可。如果有具体的代码报错或场景,可以提供更多细节以便进一步解答。

ℹ️ 本回答由 AI 生成,内容仅供参考