You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中多ADB命令脚本&&报错,如何修改使其正常运行?

问题解决步骤

1. 修复PowerShell中&&的语法错误

PowerShell(尤其是5.1及更早版本)不支持&&作为命令分隔符,这是CMD专属语法。你需要将命令中的&&替换为PowerShell兼容的执行方式:

  • 用分号;直接分隔命令:
    adb shell am start -a android.intent.action.VIEW -d "whatsapp://send?phone=+123456789" ; Start-Sleep -Seconds 2 ; adb shell input text "Hello" ; adb shell input keyevent 66
    
  • 或者分多行独立执行每个ADB命令,可读性更强:
    adb shell am start -a android.intent.action.VIEW -d "whatsapp://send?phone=+123456789"
    Start-Sleep -Seconds 2
    adb shell input text "Hello"
    adb shell input keyevent 66
    

2. 解决输入/按键事件未生效的问题

脚本仅打开应用但后续操作失效,核心原因是应用界面还未完全加载就执行了输入命令,需要在打开应用后添加延迟等待:

  • 使用Start-Sleep -Seconds <等待秒数>(建议2-3秒,可根据设备性能调整),确保WhatsApp的聊天输入框已就绪。
  • 另外,input text命令中的空格需要转义,可替换为%20,或用单引号包裹文本避免PowerShell解析空格:
    adb shell input text "Hello%20World"  # 用%20代替空格
    # 或者
    adb shell input text 'Hello World'    # 单引号避免PowerShell拆分文本
    

完整示例脚本(从CSV读取参数)

假设你的CSV文件包含Phone和Message两列,可参考以下脚本:

# 导入CSV参数
$whatsappTasks = Import-Csv -Path "whatsapp_params.csv"

foreach ($task in $whatsappTasks) {
    # 打开指定联系人的WhatsApp聊天窗口
    adb shell am start -a android.intent.action.VIEW -d "whatsapp://send?phone=$($task.Phone)"
    # 等待界面加载完成
    Start-Sleep -Seconds 3
    # 转义消息中的空格并输入
    $formattedMessage = $task.Message -replace ' ', '%20'
    adb shell input text $formattedMessage
    # 发送消息(按键66对应回车键)
    adb shell input keyevent 66
    # 可选:等待发送完成后再处理下一条
    Start-Sleep -Seconds 1
}

额外注意事项

  • 确保ADB已添加到系统环境变量,PowerShell能直接调用adb命令。
  • 部分设备需要开启USB调试中的“模拟输入”权限,否则input命令会失效。
  • 若使用PowerShell 7+,可通过Set-PSReadLineOption -EditMode Emacs启用&&支持,但仍推荐用兼容旧版本的写法。

内容的提问来源于stack exchange,提问作者simonc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:30:47