在FOR循环中运行“adb pull [target] [destination]”时,Windows cmd会乱码

时间:2017-08-29 08:45:22

标签: android windows batch-file adb

我正在尝试创建一个批处理文件,使用 adb pull 从我的Android手机中提取所有的dashcam视频。

set source=/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video
set destination=S:\Archive\Autoboy\original
for /f "usebackq" %%f in (`adb shell ls %source%`) do (
    echo.adb pull %source%/%%f
)

此脚本正常工作,因为这会创建以下输出(为了调试目的而回显):

  

adb pull /mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video/2017_08_28_08_33_53.mp4

     

adb pull /mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video/2017_08_28_18_35_14.mp4

     

[...]

但是,当我尝试为 adb pull 命令定义目标时,无法正常工作

set source=/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video
set destination=S:\Archive\Autoboy\original
for /f "usebackq" %%f in (`adb shell ls %source%`) do (
    echo.adb pull %source%/%%f %destination%\%%f
)

这个给出以下输出:

  

S:\存档\ Autoboy \原始\ 2017_08_28_08_33_53.mp4nz.blackbox /文件/ autoboy / autoboy_video / 2017_08_28_08_33_53.mp4

     

S:\存档\ Autoboy \原始\ 2017_08_28_18_35_14.mp4nz.blackbox /文件/ autoboy / autoboy_video / 2017_08_28_18_35_14.mp4

     

[...]

如果我尝试实际运行命令而不是回显,它会给我一个不同的加扰字符串:

  

'不存在/ m_external_sd / Android / data / com.happyconz.blackbox / files / autoboy / autoboy_video / 2017_08_28_08_33_53.mp4

在运行此脚本之前是否需要在cmd中设置一些内容,或者这是一个真正的错误?

当然我可以 cd 进入我的目的地。 dir,然后运行pull而不给它目的地,但这对于一个简单的脚本来说是不必要的复杂化。

我敢打赌,因为Windows和Unix使用不同的新行定义。

1 个答案:

答案 0 :(得分:0)

更改您的最终文件名以仅使用文件的基础和扩展名,并为安全起见封装它:

echo.adb pull %source%/%%f "%destination%\%%~nxf"

这可能有所帮助。