<?php
/**
* Class adbCopyFiles
*
* Copies files from a specified folder on the Android device (over USB, using adb)
* to the specified folder on the PC.
*
* Usage:
* > php acf.php <from> <to>
* Where:
* <from> - Android folder path for example: /sdcard/DCIM/100ANDRO/ (with trailing slash)
* <to> - PC folder path, for example: ./100ANDRO/ (with trailing slash)
*
* Sample output:
* Z:\web\adbCopyFolder>php acf.php
List of devices attached
CB5A1PTCB4 device
/sdcard/DCIM/100ANDRO/DSC_0001.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0002.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0004.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0005.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0006.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0007.jpg Exists
/sdcard/DCIM/100ANDRO/DSC_0081.jpg Missing
2203 KB/s (1963546 bytes in 0.870s)
/sdcard/DCIM/100ANDRO/DSC_0082.jpg Missing
2319 KB/s (2215840 bytes in 0.933s)
/sdcard/DCIM/100ANDRO/DSC_0083.jpg Missing
2466 KB/s (1788425 bytes in 0.708s)
/sdcard/DCIM/100ANDRO/DSC_0084.jpg Missing
2621 KB/s (1312938 bytes in 0.489s)
*/
class adbCopyFiles {
var $adbPath = 'c:\\android\\android-sdk-windows\\platform-tools\\';
var $from = '/sdcard/DCIM/100ANDRO/';
var $to = './100ANDRO/';
function __construct() {
$this->call('adb devices');
if ($_SERVER['argc'] == 3) {
$this->from = $_SERVER['argv'][1];
$this->to = $_SERVER['argv'][2];
}
}
function call($cmd) {
}
function grab($cmd) {
return $output;
}
function noSlash($str) {
$lastChar = $str{$len-1};
} else {
return $str;
}
}
function render() {
$files = $this->grab($this->adbPath.'adb shell ls -R '.$this->from);
foreach ($files as $file) {
$status = file_exists($this->to.$file) ?
'Exists' : 'Missing'; echo $this->from.$file, "\t", $status, "\n";
if ($status == 'Missing') {
$cmd = 'adb pull '.$this->from.$file.' '.$this->noSlash($this->to);
//echo $this->adbPath.$cmd, "\n";
$this->call($cmd);
}
}
}
}
$acf = new adbCopyFiles();
$acf->render();