脚本代码 运行时打开手机软件,自动解压,而且输入限定的解压密码,解压后将解压文件移动download文件夹中

HAMI_7423674651 · 15 小时前

回答

Hamibot AI
1
· 15 小时前

实现这个需求需要结合应用启动、UI 自动化操作以及文件管理功能。由于不同的解压软件界面不同,脚本中的 UI 选择器需要根据实际软件进行调整。以下是基于 Hamibot 环境的实现方案。

前置准备

  1. 权限授予:确保 Hamibot 拥有存储权限(读写文件)和悬浮窗/无障碍服务权限(用于模拟点击和输入)。
  2. 目标路径:确认压缩包所在的绝对路径,以及解压后文件的预期存放位置。
  3. 兼容性注意:代码遵循 Rhino 1.7.15 引擎规范,不使用箭头函数和默认参数。

脚本示例

// 文档地址 https://docs.hamibot.com/

var packageName = "com.example.unzip"; // 替换为实际的解压软件包名
var zipFilePath = "/sdcard/Download/test.zip"; // 替换为你的压缩包路径
var password = "123456"; // 你的解压密码
var targetDir = "/sdcard/Download/"; // 目标移动文件夹

// 1. 打开解压软件
launchApp(packageName);
sleep(2000);

// 2. UI 自动化操作:找到压缩包并点击
// 注意:以下选择器需根据实际软件界面修改,例如使用 text(), className() 等
if (exists(text("test.zip"))) {
    click(text("test.zip"));
    sleep(1000);
} else {
    toast("未找到压缩包");
    exit();
}

// 3. 输入密码并确认解压
// 假设界面上有密码输入框和确认按钮
if (exists(className("android.widget.EditText"))) {
    setText(className("android.widget.EditText"), password);
    sleep(500);
}

if (exists(text("解压") || text("OK") || text("确定"))) {
    click(text("解压") || text("OK") || text("确定"));
    sleep(3000); // 等待解压完成
}

// 4. 获取解压后的文件路径并移动
// 这里假设解压到了当前目录或指定目录,你需要根据实际情况调整源路径
// 如果知道解压后的具体文件名,可以直接移动
var sourceFile = "/sdcard/Download/test/"; // 示例解压后文件夹路径
var destFile = targetDir;

// 检查目录是否存在
if (files.isDir(sourceFile)) {
    var filesList = files.listDir(sourceFile);
    for (var i = 0; i < filesList.length; i++) {
        var fileName = filesList[i];
        var fromPath = sourceFile + fileName;
        var toPath = destFile + fileName;
        
        log("正在移动文件:" + fileName);
        var result = files.move(fromPath, toPath);
        if (result) {
            log("移动成功");
        } else {
            log("移动失败");
        }
    }
    // 可选:删除空文件夹
    // files.remove(sourceFile); 
} else {
    toast("未检测到解压后的文件目录");
}

toast("任务执行完毕");

关键说明

  1. UI 选择器适配text()className() 等是 UI 自动化的核心。不同解压软件的界面元素 ID 不同,你可能需要使用“布局分析”工具查看具体的控件属性,并替换脚本中的选择器。
  2. 文件路径:Android 系统中 /sdcard/ 通常等同于 /storage/emulated/0/。请确保路径字符串正确,避免移动失败。
  3. 错误处理:脚本中加入了基本的判断逻辑(如 exists),但在复杂场景下建议增加更多的 try-catch 或延时等待,防止因网络或系统卡顿导致步骤跳过。
  4. 性能优化sleep 时间不宜过长,可根据实际设备速度调整,提高脚本执行效率。

如果在运行过程中遇到特定报错,请提供具体的错误日志,以便进一步排查。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实