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

使用PowerShell变量生成adb push命令失败问题排查

问题分析与解决办法

问题根源

  • 你直接执行的那行脚本存在语法错误:把源路径和目标路径放在了同一个双引号字符串里,PowerShell会将整个字符串作为单个参数传给adb。但adb的语法要求adb push <源路径> <目标路径>是两个独立参数,因此adb会把"C:\temp\Files\test.jpg /sdcard"当成完整的源文件路径,自然找不到对应文件,执行失败。
  • Write-Host输出的命令能正常运行,是因为PowerShell输出时会去掉外层的双引号,复制粘贴后变成adb push C:\temp\Files\test.jpg /sdcard,此时源和目标是两个独立参数,adb能正确识别。

正确写法(推荐)

把源路径和目标路径拆成两个独立参数,分别处理引号:

# 直接执行正确的adb命令
adb push "$($c.DirectoryName)\$($c.Name)" $targetPath

# 输出命令的写法保持不变即可
Write-Host adb push "$($c.DirectoryName)\$($c.Name) $targetPath"

这样PowerShell会把带引号的源路径(处理空格等特殊字符)和目标路径作为两个参数传给adb,完全符合adb的调用要求。

备选写法(不推荐,存在安全风险)

如果一定要通过拼接字符串执行命令,可以用Invoke-Expression,但需转义引号:

$command = "adb push `"$($c.DirectoryName)\$($c.Name)`" $targetPath"
Invoke-Expression $command
Write-Host $command

这种方式会把拼接好的字符串当作命令执行,但如果CSV里的路径包含恶意代码,可能引发安全问题,因此优先选择第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:20:35