复制到 Windows 时删除 Android 文件名中的非法字符

复制到 Windows 时删除 Android 文件名中的非法字符

多年来,我一直使用一款名为“Fastnote”的应用程序在我的 Android 手机上做笔记。笔记会自动保存,文件名与文件的第一行相对应。

这样的自动保存非常方便,但结果是许多这些文件名包含特殊字符,例如“或\(双引号或斜线),这些字符在 Android 中有效,但在 Windows 中无效。

每次我尝试将所有笔记(70 个文件夹中约 1,800 个文件)备份到运行 Windows 10 的 PC 上时,这些文件都无法复制。我可以创建一个 zip 文件并将其复制到 PC 上 - 这样我就有了一个“备份”。但是当我尝试在 PC 上解压此文件时,名称中包含无效字符的任何文件都无法复制。

有没有办法自动删除所有文件名中的无效字符?这可能发生在

  • 复印前已在打电话

  • 或在通过 USB 连接进行复制操作期间

  • 或者在 Windows 中解压时

编辑:我需要读取 PC 上的文件,所以仅仅备份是不够的。我实际上需要在我的 PC 上有一个完全可访问的备份。我认为做到这一点的唯一方法是将文件名转换为 Windows 可以处理的内容。

答案1

创建有用备份的正确方法是不要使用 Android MTP 接口访问这些文件。

相反,你应该通过以下方式在设备上创建备份adb(需要激活开发模式Android 调试桥在设备设置中)。此外,在 PC 端,您还必须安装带有 ADB 的最低版本的 Android SDK。

这有两个优点:

  1. 所有文件名都被保留 - Windows 不必处理它们,因此不会失败。
  2. 在设备上创建备份,然后仅下载合并的存档,速度要快得多:Windows 资源管理器使用的 MTP 协议非常慢,我预计对于如此大量的文件,在设备上创建备份的速度会快 10-20 倍。

两步变体(在设备上创建 TAR 存档 + 下载)

然后在设备上创建备份档案:

adb shell tar /sdcard/fastnode_backup.tar /sdcard/<path to fastnote files>

之后,您可以通过以下方式从设备下载创建的备份文件

adb pull /sdcard/fastnode_backup.tar

单步变体(创建 TAR 存档并将其传输到 PC)

在设备上创建备份并将创建的 tar 存档传输到 PC - 此变体不需要设备上的任何闪存):

adb exec-out 'cd /sdcard; tar -cf - <path to fastnote files in sdcard section>/' > fastnode_backup.tar

或者,在运行 Android 8 及更新版本的设备上,它fastnode_backup.tar也应该出现在设备的 Windows 资源管理器视图中。然后,您可以下载此备份文件,其中保留了所有文件名。

如果你仍然需要从档案库中访问这些文件,请使用7-Zip在您的 PC 或其他地方提取文件。7-Zip 内置了对无效文件名字符的检测和替换功能。

相关内容