使用ADB从Android设备拉取包含 ellipsis (…) 的文件时遇到问题

23次阅读
没有评论

问题描述

在尝试通过 ADB(Android Debug Bridge)将 Android 设备的 /sdcard 目录下的文件拉取到 Windows 10 时,遇到了特定文件名带“…”的情况,导致无法正确创建文件或目录。具体表现为在进行文件拉取操作后会收到错误提示:

cannot create [my file > my computer]: Not a directory

经测试,当尝试从包含文件名“Meanwhile In Burbank…”(正确应该称作“Meanwhile In Burbank”)的文件夹中读取内容时,出现此问题。Windows 操作系统不允许多余的扩展点字符,即文件或目录名称不能以单一的句点结束。

解决方案

注意:以下解决方案基于 Windows 操作系统的特性。

方案1——手动重命名文件和文件夹

最直接且简单的方法是预先在设备侧(或者通过文件传输工具)将带 “…” 的文件名手动更改为正常的名称。具体操作如下:

步骤一:使用 File Explorer 访问设备的 adb 服务

确保设备连接到电脑,并已安装适当的驱动和 ADB 工具。打开命令提示符窗口,执行 adb devices 命令检查设备是否成功识别。

步骤二:手动更改文件名

  1. 在设备上找到需要重命名的文件或文件夹;
  2. 使用 adb shell 可以访问底层操作系统终端,尝试执行以下命令(假设目标文件名为 Meanwhile In Burbank.../file.txt):

shell
cd /sdcard/Meanwhile\ In\ Burbank/
rm file.txt # 删除原始的有错误名称的文件
mv Meanwhile\ In\ Burbank...\file.txt ./ # 更改已存在的文件名(此处仅更改 `.txt`)

  1. 检查目录中的内容:

shell
ls -la

确保文件名已更正为正确的格式。重复上述过程,直到所有不规范的名称被纠正。

步骤三:重新连接设备并通过 ADB 安全地拉取文件

在确认名称正确无误之后,可以安全从设备上重新进行文件拉取操作:

adb pull /sdcard/Meanwhile\ In\ Burbank/ my/local/path/

方案2——脚本编写绕过问题

如果频繁遇到类似情况或不愿意手动重命名大量文件,则可通过编程方法自动处理。使用 PowerShell 或批处理脚本来替代 ADB 自动完成整个过程,从而避免名称相关的陷阱。

具体示例:

$adbPath = "C:\path\to\platform-tools"
$deviceID = ""
$sourcePath = "/sdcard/Meanwhile In Burbank/"
$localPath = "D:\my files\backup"

# 确认设备已启动并存在目标目录(请根据实际情况调整)
Invoke-Expression "$adbPath\adb devices"
Invoke-Expression "$adbPath\adb shell mkdir -p $sourcePath/"

Start-Sleep 2

# 使用 adb 拉取文件,并在本地重新命名以符合 Windows 格式
Invoke-Expression "$adbPath\adb pull $sourcePath .\$localPath"

# 后续代码可将拉取的文件进行进一步处理,如重命名

这种方法虽然较为复杂但能极大提高效率。

注意事项:

确保 ADB 和相关工具安装路径正确,并根据你的实际情况调整相应参数。通过编写脚本来批量处理这类问题可以大大提高操作便捷性与准确性。

正文完