我使用以下命令将最近添加的文件从连接的设备复制到我想要的目录中:
adb pull sdcard/Robotium-Screenshots/filename.jpg D:\jenkins\jobs\
但它只能复制我指定的文件。
如何在不指定名称的情况下将最新文件从sdcard/Robotium-Screenshots/
复制到D:\jenkins\jobs\
?
答案 0 :(得分:1)
这是一个单行程序,它将从指定的文件夹中提取最后一个修改过的文件:
adb exec-out "cd /sdcard/Robotium-Screenshots; toybox ls -1t *.jpg 2>/dev/null | head -n1 | xargs cat" > D:\jenkins\jobs\latest.jpg
已知限制:
它依赖ls
命令根据修改时间进行排序。从历史上看,Android设备有多个coreutils
来源,即toolbox
和toybox
多个二进制文件。 toolbox
版本不支持基于时间戳的排序。这基本上意味着这不会对比Android 6.0更早的任何东西起作用。
它使用adb exec-out
命令确保tty
不会破坏二进制输出。请务必将platform-tools
更新为最新版本。
答案 1 :(得分:1)
如果使用类似bash的外壳,则可以执行以下操作:
adb pull /sdcard/Robotium-Screenshots/`adb shell ls -t /sdcard/Robotium-Screenshots/ | head -1` ~/Downloads
您可以通过Windows的cygwin,msys,git获得基于bash的外壳(基于msys)。如果您使用的是Mac或Linux,则已经有一个类似bash的外壳。
答案 2 :(得分:0)
执行此操作的一种方法是使用以下命令获取文件名:
adb shell ls -lt /sdcard/Robotium-Screenshots | head -n2 | tail -n+2 | awk '{print $8}'