祝大家有美好的一天。在谷歌搜索并尝试各种解决方案之后,我有点陷入以下简单(至少看起来如此)的任务: 我有一个 powershell 变量,说:
$simpleString = "Hello World and stuff"
我正在通过 ADB 测试 Android 应用程序,我需要将此变量的值作为字符串传递:
.\adb.exe shell input text "$simpleString"
我收到错误
。db.exe:错误:命令参数无效:文本
随后提醒如何使用adb“输入”命令。
更新: 我还尝试了以下解决方法:
$myCmd = Write-output "adb.exe shell input text `"$simpleString`""
从而为 CMD 构建有效的命令,然后通过以下方式运行它:
cmd /c $myCmd
但我仍然遇到同样的问题
任何帮助将不胜感激,谢谢。
好的,经过一些额外的尝试和错误,我找到了一个适合我的解决方案(使用反引号、单引号并将命令“包装”到另一个变量中:
$myCmd = Write-output "adb.exe shell input text `'$simpleString`'"
& cmd /c $myCmd
拼写出第一个命令以便于理解:
$myCmd = 写入输出{双引号}adb.exe shell 输入文本{反勾}{单引号}$simpleString{反勾}{单引号}{双引号}
我也遇到了这个问题,看了这篇文章后,我最终想出了一个更简单的答案。 对我来说,问题是将双引号 (") 传递给 adb shell 命令以包含短信的消息字符串。经过多次尝试和错误,我意识到 adb shell 需要反斜杠字符 () 来转义双引号,但调用powershell 脚本需要反引号 (`) 来转义反斜杠和双引号。 所以我的脚本代码如下所示:-
$messy = "`\`"Dear $Name , your appointment with XXX is at: " + ($_.Start.tostring("dd/MM/yyyy HH:mm")) + "`\`""
adb.exe shell service call isms 5 i32 1 s16 com.android.mms s16 null s16 09090909090 s16 null s16 $messy s16 null s16 null i32 0 i64 0
上面字符串 $messy 中的反引号将被 powershell 去掉,留下 " 传递给 adb shell,然后 adb shell 会去掉 \,留下消息字符串周围的引号。