回答
“匹配的文件”这一表述在 Hamibot 中可能涉及两种情况:一是图像匹配的结果位置,二是文件列表筛选的结果。以下是针对这两种情况的详细说明:
1. 图像匹配结果(Image Matching)
如果你是指使用 images.findImage 或 images.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 生成,内容仅供参考