Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB?
Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB-кабель?
Я подключаю свой смартфон к компьютеру через USB-кабель. Захожу в Мой компьютер и в списке доступных дисков вижу следующее: Если отрыть свойства, то вот что будет показано: Захожу внутрь и вижу это: Захожу еще внутрь и вижу структуру каталогов смартфона: Хочу автоматизировать некоторые действия по бэкапированию определенных каталогов смартфона (т.е. скопировать файлы из определенных папок на компьютер). Также хочу удалять файлы из определенных каталогов (лишний мусор). Для удаления ненужных файлов хочу написать бат-файл что-то типа: Код:
DEL C:\cache Может можно путь к устройству как-то вытащить, где-то посмотреть? Ведь раз он отображается в списке дисков как обычный диск, значит как-то к нему можно обратиться. |
Цитата:
|
test009, и не забывайте, что папки с точкой спереди, это скрытые папки для ОС, основанных на Linux. Не удалите лишнего.
И обратите внимание что Файловая система-Иерархическая структура |
Цитата:
Цитата:
|
Цитата:
Этот компьютер\ASUS_Z010DD\Внутр. накопитель Цитата:
Получается, сделать ничего нельзя? Буду тогда по-другому выкручиваться. |
Цитата:
Код:
Option Explicit |
|
test009, значит, всё-таки можно будет. Только не «bat-файл», а либо WSH, либо PoSH. И взаимодействовать можно будет с этой квази-системой только через интерфейсы Проводника — Set objFolder = objShell.NameSpace("…тут длинный путь, который на Вашем скриншоте приведён во второй-третьей-четвёртой строках…") и т.д.
|
Цитата:
Если говорить о powershell, то можно поступить проще: Пример получения списка элементов в каталоге с копированием файлов на компьютер: Код:
# Имя смартфона так, как оно выглядит в проводнике но это, всё также, не будет полноценным копированием файлов, т.е. файловые операции будут проходить со всеми недостатками протокола MTP... |
Цитата:
P.S. А напрямую нельзя — вместо перебора: Цитата:
|
Цитата:
А перебором мы, как раз и получаем путь к конечному каталогу. Возможно, способ существует, но мне он не известен, увы... |
Понял, попробую, спасибо.
|
Цитата:
powershell script.ps1
Код:
<# |
YuS_2,
Благодарю за скрипт. (Правда не очень понимаю как он работает) Случайно не осталась версия где есть проверка наличия файлов на телефоне? Чтобы проверять, когда телефон хоть и подключён, но не разблокирован (то есть доступа нет). Из-за чего появляется ошибка при запуске скрипта. (Windows7 x64, PSVersion 5.1.14409.1005 ) Цитата:
Вроде копируется нормально. |
Цитата:
Дело в том, что никакой древовидной файловой структуры при работе с MTP, не существует, все действия осуществляются через созданный экземпляр COMObject, путем получения каждого элемента в отдельности, а они существуют только в виде родительского или дочернего (в случае если текущий элемент - каталог) элементов от текущего. В общем, не всё там просто, хоть и не невозможно. И именно поэтому, это достаточно медленные операции... Цитата:
Цитата:
Media Transfer Protocol |
Цитата:
|
Цитата:
Впрочем, это не столь важная функция, а скорее как дополнительное удобство. Более важно другое... Вообще изначально задумка была такая: - Скопировать файлы с телефона (это работает). - Проверить по хеш-сумме скопированные файлы с ресурсом. (так как были случаи, когда фото скопировались битыми. Это обнаружилось потом, а оригиналы уже были удалены). - Если все файлы прошли проверку, то удалить их с телефона (возможно с предварительным запросом подтверждения у пользователя). Скорость работы всей этой системы тоже не важна, главное чтобы каждый раз это вручную не делать, так как файлы лежат в разных папках и в разных разделах памяти телефона (во внутренней памяти, на sd-карте, фото, видео, заметки, аудиозаписи, скриншоты и другое). |
Цитата:
Скрипт подключением управлять "не умеет", так что если ресурс существует, он выдаст то, что доступно, если ресурсы не доступны, будет выдана ошибка... Цитата:
Цитата:
Цитата:
|
Цитата:
Статью читал, но некоторые моменты неправильно понял. Выходит для проверки нужна проверочная программа установленная в телефоне, и только соединившись с ней (наверное через API) можно получить информацию? Ну а хотя бы удалять файлы с телефона как-то можно? |
Цитата:
Цитата:
Цитата:
|
YuS_2,
Благодарю за информацию. А переименовывать папку в телефоне через MTP можно? То есть, при копировании с ПК на телефон там уже есть старая папка с файлами, её переименовать, чтобы залить новую... Хотя наверно проще будет имя новой папки чуть поменять и тогда уже закидывать. Цитата:
|
Цитата:
Скрытый текст
Код:
Option Explicit Alexoner, с такими запросами проще взять Far Manager с плагином PortaDev и делать всё «ручками». |
Цитата:
Цитата:
Также можно установить total commander для ПК и через него управлять файлами на смарте... Цитата:
|
Цитата:
А в VBS функционала больше получается в этом плане? |
YuS_2, это не метод, это глагол, Verb. Метод .Verbs класса FolderItem, возвращает коллекцию FolderItemVerbs.
Надо бы ещё попробовать удалить этим способом. И это: Цитата:
Цитата:
Цитата:
|
Цитата:
- да, такой список присутствует. Ведь это метод работы powershell с WSH, всё же, в итоге... другое дело, что я не знаю, что с этим делать дальше, т.е. требуется пинок в этом направлении... :) По сути, мы получаем объект System.MarshalByRefObject, но лично мне, это ни о чем, пока... надо углублять знания... Цитата:
Цитата:
Только я бы сказал, что здесь powershell использует средство автоматизации: объект Application оболочки Windows, также как и скрипт vbs (через WSH)... сути это конечно не изменит, но так точнее (это мое природное занудство говорит :) ) |
Цитата:
Цитата:
Глаголы эти формируют контекстное меню проводника. В powershell их можно задействовать, хоть и не все (например, Переи&меновать - OperationStopped: The method or operation is not implemented.). Примерно так: Код:
... |
Цитата:
Цитата:
Цитата:
|
Цитата:
В итоге, мне показалось, что овчинка не стоит выделки, т.к. есть вполне реализованные программы, для работы с файловой системой устройств, а писать калечный дубликат - не хочется. В общем, плюнул я на все эти MTP и не стал голову забивать себе... :) Цитата:
|
Вложений: 1
YuS_2,
Приветствую. Попробовал через скрипт скопировать десяток файлов с ПК на телефон. Половина скопировалось, а половина запросила подтверждение. Есть ли способ как-то обойти подтверждение? Или может как-то автоматически подтверждать копирование? PSVersion 5.1.14409.1005 Windows 7 x64 Samsung Galaxy Note 3 Android 4.4.2 Код:
$phone = "Note 3" |
Цитата:
|
Желающие могут на свой страх и риск поиграться с этим: windows 7 - Disable prompt to convert videos copied to media device - Super User. Я — нет.
|
YuS_2, В функцию "get-folder" добавил проверку на блокировку подключённого девайса, чтобы не появлялись красные строки. Возможно будет полезна в скрипте.
Код:
function get-folder ($paths){ |
YuS_2, Можно ли как-то подставлять параметр "-from" или "-to" с помощью переменной?
Код:
|
Цитата:
From и To - это переключатели, которые задают значение соответствующих переменных $from и $to, которые, в свою очередь, имеют булевый тип, либо $false, либо $true. По умолчанию, если ключи не указаны, обе переменные имеют значение False, если же указать один из ключей, то одна из соответствующих переменных будет иметь значение True. Одновременно, две переменные не могут иметь значение True. |
Цитата:
(Например: если есть ключ -cls, то подставить Movehere.) |
YuS_2
Спасибо за скрипт! Подскажи, почему ожидание завершения копирования файла происходит только со стороны смартфона, тогда как при копировании на смартфон скрипт сразу передаёт управление дальше (хотя по факту файл ещё копируется)? Может есть способ заставить его ждать полного копирования файла в обоих направлениях? Например, это может понадобиться, когда после успешного копирования файла на смартфон в консоль нужно выдать соответствующее уведомление. |
|
Цитата:
Просто и для from и для to, по сути используется одна и та же конструкция: Код:
getfolder.copyhere($item) |
Цитата:
|
YuS_2
Теперь понятно, спасибо! Ничего умнее, чем просто дождаться закрытия окна копирования на ум не приходит. Но не гуглится подобный пример. Никто не подскажет, как это в PowerShell изобразить? В идеале, после этого ещё бы и на наличие скопированного файла в смартфон сделать проверку (окно копирования может закрыться и при ошибке этого самого копирования), но, как я понял, это либо невозможно, либо надо углубляться в работу протокола MTP. |
Время: 16:36. |
Время: 16:36.
© OSzone.net 2001-