2017-08-29 17 views
1

我想创建一个批处理文件,使用adb pull从我的Android手机中提取所有我的dashcam视频。当我在FOR循环中运行“adb pull [target] [destination]”时,Windows cmd加扰了一些东西

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 
) 

这个脚本工作,因为这会产生以下输出(呼应用于调试):

亚行拉/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files /autoboy/autoboy_video/2017_08_28_08_33_53.mp4

亚行拉/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video/2017_08_28_18_35_14.mp4

[...]


然而,当我试图定义一个目的地到ADB拉命令,它不起作用

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

[...]


如果我尝试实际运行的命令,而不是呼应,它给了我一个不同的炒字符串:

'不existmnt/m_external_sd /安卓/数据/ com.happyconz.blackbox /files/autoboy/autoboy_video/2017_08_28_08_33_53.mp4


有什么我需要在cmd中设置运行此脚本之前,或者这是一个真正的错误?

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

我敢打赌,这是因为Windows和Unix使用不同新线定义。

+0

将adb pull的输出保存到文件中:'adb shell ls%source%> output.txt'并检查它是否回车(CR)。他们有什么不妥。 – wolfrevokcats

回答

0

影响您的最终文件名只使用基地和文件的扩展名,和报价,将其封装为安全:

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

很可能帮助。