|
Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 8 и 8.1 » Разное - Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB? |
|
Разное - Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB?
|
Старожил Сообщения: 177 |
Профиль | Отправить PM | Цитировать Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB-кабель?
Я подключаю свой смартфон к компьютеру через USB-кабель. Захожу в Мой компьютер и в списке доступных дисков вижу следующее: Если отрыть свойства, то вот что будет показано: Захожу внутрь и вижу это: Захожу еще внутрь и вижу структуру каталогов смартфона: Хочу автоматизировать некоторые действия по бэкапированию определенных каталогов смартфона (т.е. скопировать файлы из определенных папок на компьютер). Также хочу удалять файлы из определенных каталогов (лишний мусор). Для удаления ненужных файлов хочу написать бат-файл что-то типа: Проблема лишь в том, что я не могу получить полный путь к файлам файловой системы смартфона из BAT-файла. Может можно путь к устройству как-то вытащить, где-то посмотреть? Ведь раз он отображается в списке дисков как обычный диск, значит как-то к нему можно обратиться. |
|
------- Отправлено: 22:37, 12-04-2019 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А перебором мы, как раз и получаем путь к конечному каталогу. Возможно, способ существует, но мне он не известен, увы... |
|
------- Отправлено: 06:34, 15-04-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Понял, попробую, спасибо.
|
------- Отправлено: 11:25, 16-04-2019 | #12 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата test009:
powershell script.ps1
<# .SYNOPSIS Отображение или копирование элементов смартфона, подключенного как устройство MTP .Description Скрипт предназначен для выборки, просмотра или копирования элементов смартфона по протоколу MTP .Parameter Phonename Обязательный: Имя смартфона так, как оно выглядит в проводнике .Parameter Sourcepath Необязательный: Путь к элементу. В смартфоне: Начиная от корневого так, как он выглядит в проводнике. Например: 'Внутренний общий накопитель\temp','Внутренний общий накопитель\temp\example.ext' В компьютере: Указываются либо абсолютные, либо относительные пути. .Parameter Destinationpath Необязательный: Путь к целевому каталогу, куда будут копироваться элементы. .Parameter Filter Необязательный: Шаблон регулярного выражения (-match), для отбора элементов с определенным наименованием. Работает только для файлов первого уровня вложенности Например: '(\.pdf|\.txt)$' .Parameter From Переключатель: Для осуществления копирования выборки элементов из смартфона в компьютер. При отсутствии, список элементов выводится в консоль. .Parameter To Переключатель: Для осуществления копирования выборки элементов из компьютера в смартфон. При отсутствии, список элементов выводится в консоль. .Example .\script.ps1 -phone 'Redmi Note 4' Это пример просмотра корневого(ых) каталогов смартфона. .Example .\script.ps1 -phone 'Redmi Note 4' ` -sour 'Внутренний общий накопитель\FOLD','Внутренний общий накопитель\temp\example.ext' ` -dest .\TEST -filt '(\.ext|\.txt|\.jpeg)$|123' -from Это пример выборки элементов из указанного каталога плюс указанный файл (в смартфоне), с применением к выборке фильтра. Вся выборка копируется в целевой каталог компьютера .\TEST .Example .\script.ps1 -phone 'Redmi Note 4' ` -sour .\TEST\1111,c:\test\run.bat ` -dest 'Внутренний общий накопитель\temp' -filt '(\.bat|\.png)$' -to Это пример выборки элементов из указанного каталога плюс указанный файл (в компьютере), с применением к выборке фильтра. Вся выборка копируется в целевой каталог смартфона 'Внутренний общий накопитель\temp' .Notes Created By YuS Version: 1.00 Date: 15/04/2019 Purpose/Change: Первая версия Version: 2.00 Date: 16/04/2019 Purpose/Change: Добавлена возможность копирования в обе стороны. Version: 2.01 Date: 17/04/2019 Purpose/Change: Удалена лишняя проверка на существование элемента. Version: 2.02 Date: 08/11/2020 Purpose/Change: Поправлены баги с копированием из компьютера на устройство. .Link http://forum.oszone.net/post-2867970.html#post2867970 #> [cmdletbinding()] param ( [parameter(Mandatory=$true)] [string]$phonename,[string[]]$sourcepath,[string]$destinationpath,[string]$filter, [switch]$from,[switch]$to ) function get-folder ($paths){ $cur = $root if($paths){ foreach ($path in $paths){ $cur = $cur.getfolder.items()|? name -eq $path } } return $cur } function get-array ($paths){ foreach ($path in $paths){ if (test-path -lit $path -patht leaf){gi $path -force} else {dir $path -force} } } $shell = new-object -com shell.application # ssfDRIVES 0x11 (17). # https://msdn.microsoft.com/en-us/library/windows/desktop/bb774096(v=vs.85).aspx #ссылка устарела # https://docs.microsoft.com/ru-ru/windows/win32/api/shldisp/ne-shldisp-shellspecialfolderconstants $root = $shell.namespace(17).self.getfolder.items()|? name -eq $phonename if (!$destinationpath -and ($to -or $from)){ write-host Необходимо указать целевой каталог -for cyan exit } if ($sourcepath -and (test-path $sourcepath) -contains $true){ if ($from) { write-host 'Ключ [-from] указывается только при копировании из смартфона' -for red $from = $false } $items = (get-array $sourcepath)|? name -match $filter $destinat = get-folder $($destinationpath.split('\')) } else { if ($to) { write-host 'Ключ [-to] указывается только при копировании в смартфон' -for red $to = $false } $sarr = if($sourcepath){$sourcepath|%{get-folder $($_.split('\'))}} else {get-folder} $items = $sarr|%{if($_.isfolder){$_.getfolder.items()} else {$_}}|? name -match $filter } if (!$items){write-host Элементы для обработки отсутствуют -for yellow;exit} if ($to){ $from = $false foreach ($item in $items){$destinat.getfolder.copyhere($item.fullname)} } elseif ($from){ if (!(test-path $destinationpath)){md $destinationpath|out-null} $dst = $shell.namespace((gi $destinationpath).fullname).self foreach ($item in $items){$dst.getfolder.copyhere($item)} } else { $items|select name,isfolder,type|sort isfolder,name } |
|
------- Последний раз редактировалось YuS_2, 08-11-2020 в 19:08. Причина: обновление скрипта 08.11.20 Отправлено: 15:12, 16-04-2019 | #13 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать YuS_2,
Благодарю за скрипт. (Правда не очень понимаю как он работает) Случайно не осталась версия где есть проверка наличия файлов на телефоне? Чтобы проверять, когда телефон хоть и подключён, но не разблокирован (то есть доступа нет). Из-за чего появляется ошибка при запуске скрипта. (Windows7 x64, PSVersion 5.1.14409.1005 ) Цитата YuS_2:
Вроде копируется нормально. |
|
Последний раз редактировалось Alexoner, 07-11-2020 в 15:39. Отправлено: 15:34, 07-11-2020 | #14 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата Alexoner:
Дело в том, что никакой древовидной файловой структуры при работе с MTP, не существует, все действия осуществляются через созданный экземпляр COMObject, путем получения каждого элемента в отдельности, а они существуют только в виде родительского или дочернего (в случае если текущий элемент - каталог) элементов от текущего. В общем, не всё там просто, хоть и не невозможно. И именно поэтому, это достаточно медленные операции... Цитата Alexoner:
Цитата Alexoner:
Media Transfer Protocol |
|||
------- Последний раз редактировалось YuS_2, 07-11-2020 в 19:59. Отправлено: 19:45, 07-11-2020 | #15 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
------- Отправлено: 08:19, 08-11-2020 | #16 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Впрочем, это не столь важная функция, а скорее как дополнительное удобство. Более важно другое... Вообще изначально задумка была такая: - Скопировать файлы с телефона (это работает). - Проверить по хеш-сумме скопированные файлы с ресурсом. (так как были случаи, когда фото скопировались битыми. Это обнаружилось потом, а оригиналы уже были удалены). - Если все файлы прошли проверку, то удалить их с телефона (возможно с предварительным запросом подтверждения у пользователя). Скорость работы всей этой системы тоже не важна, главное чтобы каждый раз это вручную не делать, так как файлы лежат в разных папках и в разных разделах памяти телефона (во внутренней памяти, на sd-карте, фото, видео, заметки, аудиозаписи, скриншоты и другое). |
|
Отправлено: 11:12, 08-11-2020 | #17 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата Alexoner:
Скрипт подключением управлять "не умеет", так что если ресурс существует, он выдаст то, что доступно, если ресурсы не доступны, будет выдана ошибка... Цитата Alexoner:
Цитата YuS_2:
Цитата:
|
||||
------- Последний раз редактировалось YuS_2, 08-11-2020 в 11:55. Отправлено: 11:50, 08-11-2020 | #18 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Статью читал, но некоторые моменты неправильно понял. Выходит для проверки нужна проверочная программа установленная в телефоне, и только соединившись с ней (наверное через API) можно получить информацию? Ну а хотя бы удалять файлы с телефона как-то можно? |
|
Отправлено: 12:25, 08-11-2020 | #19 |
Crazy Сообщения: 1186
|
Профиль | Отправить PM | Цитировать Цитата Alexoner:
Цитата Alexoner:
Цитата Alexoner:
|
|||
------- Отправлено: 15:43, 08-11-2020 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
При подключенном USB устройстве не включается (зависает) компьютер | Ment69 | Материнские платы и память | 18 | 20-10-2017 08:17 | |
Мышь - Как правильно подключать usb-мышь к компьютеру? | doc11111 | Прочее железо | 1 | 12-11-2016 19:02 | |
Драйвер - Не могу подключить телефон к компьютеру через USB кабель (отказано в доступе) | Behey | Microsoft Windows 7 | 16 | 06-05-2014 20:39 | |
как взаимодействовать с окном при помощи его заголовка | impa | AutoIt | 5 | 18-08-2011 10:13 | |
RDP/Citrix/Term - [решено] Как подключиться к удалённому компьютеру через интернет | Sasha_wq-1 | Сетевые технологии | 6 | 19-10-2009 20:53 |
|