如何将播放列表歌曲从 android 导出到 windows PC

How to export a playlists Song from android to a windows PC

所以我想将 phone 上的所有歌曲导出到我的 PC,这些歌曲位于我预装的音乐播放器的特定播放列表中。恕我直言,应该集成的功能。但事实并非如此,因为音乐文件存储在许多不同的目录中,有些甚至在外部 SD 卡上,我不想手动执行此操作。

谷歌搜索没有返回任何有价值的东西,而且三星 Kies 似乎没有提供该功能,所以我自己写了一个批处理文件,并认为我可以分享。我在这里这样做是因为使用我的文件的人应该对他们将要做的事情有一个基本的了解,当他们是 Whosebug 的用户时,他们可能已经有了。

对于此解决方案,您需要安装 adb

如何使用我的文件:

1.用音乐的路径创建一个文件

This app 会自动执行此操作,并且还允许导入播放列表(没有音乐文件)。但是您也可以通过其他方式创建该文件,例如用手。确保每个文件路径都在一个新行上。空格没问题。

/storage/extSdCard/Instalok/Media__t4p3f3.mp3 /storage/extSdCard/Instalok/Media__t6p5f3.mp3 /storage/extSdCard/Instalok/Media__t8p7f3.mp3 /storage/emulated/0/books/GRETE_PAIA_San_Sebastiano.mp3 /storage/emulated/0/mp3/the prodigy - 3 kilos.m4a
/storage/emulated/0/mp3/Mermaid.mp3

上面的示例文件。 调用该文件 playlist.txt 并将其存储在您的 PC 上我的批处理文件旁边。

2。确保您的 phone 已准备就绪

通过 USB 将 android phone 连接到 windows 计算机,然后打开 CMD。您可能需要在 phone 上启用 USB 调试或解锁锁屏并允许访问。如果您的 phone 已连接,adb devices 会将其列出。

3。检查文件路径

如果您自动生成文件,路径可能与 adb 使用的路径不同。在我的例子中,adb 使用 /mnt/sdcard 而文件包含内部 sdcard 的所有路径为 /storage/emulated/0/storage/emulated/ 通过 adb 存在,但目录 0 不存在。 在我的例子中,它适用于外部 SD 卡。 因此,请使用 adb shell 和您常用的导航方式检查您的路径:cdls

如果您的路径与 adb 需要的路径不同,请在文本文件中替换它或使用批处理文件中的 SEARCHTEXT REPLACETEXT 选项。如果你不需要我的选项,请确保用它自己替换一些东西。

4.设置目标文件夹 编辑批处理文件并将 pathname 设置为所需的目标文件夹。确保它已经存在!

5.测试运行 将批处理文件存储在与 playlist.txt 和 运行 相同的目录中。它会要求你做一个测试运行。按 y 然后按 Enter 让它显示它将使用的源路径。它还将检查目标文件夹是否存在:如果不存在,文字将变为红色。 不过它不会检查源路径,那是你自己的工作。

6. 运行 运行 再次输入,这次输入除 y 以外的任何内容。然后按回车。这次它将 运行 真正做到,将指定的文件复制到目标文件夹中。

文件

另存为something.bat

@echo off
REM make sure everything is set correctly
REM playlist.txt: place a text file in the same dir as this file
REM               and name it playlist.txt
REM               it should contain all file paths on the phone
REM               each path on a new line
REM                    This can be autogenerated for a playlist by https://play.google.com/store/apps/details?id=org.ssi.playlistbackup
REM pathname: Where should all the files be saved to
REM SEARCHTEXT: Where the file containing all the paths says the file is
REM REPLACETEXT: Where adb shell says the file is
REM Make sure your destination folder at pathname already exists
setlocal enabledelayedexpansion
color 0f
set pathname=F:\Files\Music
set SEARCHTEXT=/storage/emulated/0/
set REPLACETEXT=/mnt/sdcard/
set /p testrun=Is this a testrun? Testrun recommended. (y/n)
if %testrun%==y (

echo Testrun

for /F "tokens=*" %%A in (playlist.txt) do (
    set filename=%%~nxA
    set remotename=%%A
    REM replace the path with the path as adb uses it. 
    REM use "adb shell
    REM     >> ls   and >>cd
    REM " to find it out
    SET string=!remotename!
    set fixedremotepath=!string:%SEARCHTEXT%=%REPLACETEXT%!

echo I will try to load this from !fixedremotepath!  to !pathname!/!filename!
)

echo This warning always appears in Testruns: Make sure you have set all variables as specified in the comments in this file.
echo If the writing turns red, check your destination Path
echo I don't check the origin paths for correctness. If they are wrong, they will be mentioned as not found.
color 0c
cd %pathname%

) else (
for /F "tokens=*" %%A in (playlist.txt) do (
    set filename=%%~nxA
    set remotename=%%A
    REM replace the path with the path as adb uses it. 
    REM use "adb shell
    REM     >> ls   and >>cd
    REM " to find it out
    set SEARCHTEXT=/storage/emulated/0/
    set REPLACETEXT=/mnt/sdcard/
    SET string=!remotename!
    set fixedremotepath=!string:%SEARCHTEXT%=%REPLACETEXT%!

echo I WILL load this from !fixedremotepath!  to !pathname!/!filename!
REM ------------------------------------------------------------
adb pull -p "!fixedremotepath!"  "!pathname!"
REM ------------------------------------------------------------
)
)
pause