Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 8 и 8.1 » Разное - Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB?

Ответить
Настройки темы
Разное - Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB?

Старожил


Сообщения: 177
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB-кабель?

Я подключаю свой смартфон к компьютеру через USB-кабель.
Захожу в Мой компьютер и в списке доступных дисков вижу следующее:



Если отрыть свойства, то вот что будет показано:



Захожу внутрь и вижу это:



Захожу еще внутрь и вижу структуру каталогов смартфона:



Хочу автоматизировать некоторые действия по бэкапированию определенных каталогов смартфона (т.е. скопировать файлы из определенных папок на компьютер).
Также хочу удалять файлы из определенных каталогов (лишний мусор).

Для удаления ненужных файлов хочу написать бат-файл что-то типа:
Код: Выделить весь код
DEL C:\cache
Проблема лишь в том, что я не могу получить полный путь к файлам файловой системы смартфона из BAT-файла.

Может можно путь к устройству как-то вытащить, где-то посмотреть?
Ведь раз он отображается в списке дисков как обычный диск, значит как-то к нему можно обратиться.

-------
Готовность человека меняться отражает степень его здравомыслия. Жак Фреско


Отправлено: 22:37, 12-04-2019

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить PM | Цитировать


Цитата Iska:
А напрямую нельзя — вместо перебора: »
Напрямую было бы можно, если получить заранее, тот самый зубодробительный путь, но где его взять? В этом вся сложность... рекурсии ведь не предоставляет MTP.
А перебором мы, как раз и получаем путь к конечному каталогу. Возможно, способ существует, но мне он не известен, увы...

-------
scio me nihil scire. Ѫ


Отправлено: 06:34, 15-04-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 177
Благодарности: 2

Профиль | Отправить PM | Цитировать


Понял, попробую, спасибо.

-------
Готовность человека меняться отражает степень его здравомыслия. Жак Фреско


Отправлено: 11:25, 16-04-2019 | #12


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить 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
}

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 08-11-2020 в 19:08. Причина: обновление скрипта 08.11.20

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:12, 16-04-2019 | #13


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


YuS_2,
Благодарю за скрипт.
(Правда не очень понимаю как он работает)
Случайно не осталась версия где есть проверка наличия файлов на телефоне?
Чтобы проверять, когда телефон хоть и подключён, но не разблокирован (то есть доступа нет). Из-за чего появляется ошибка при запуске скрипта.

(Windows7 x64, PSVersion 5.1.14409.1005 )

Цитата YuS_2:
не будет полноценным копированием файлов, т.е. файловые операции будут проходить со всеми недостатками протокола MTP »
Интересно, в чём выражается неполноценное копирование и какие недостатки у MTP?
Вроде копируется нормально.

Последний раз редактировалось Alexoner, 07-11-2020 в 15:39.


Отправлено: 15:34, 07-11-2020 | #14


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить PM | Цитировать


Цитата Alexoner:
Случайно не осталась версия где есть проверка наличия файлов на телефоне? »
В смысле поиск файла? Так это, как раз, один из недостатков протокола... нет такой возможности, её можно только имитировать...
Дело в том, что никакой древовидной файловой структуры при работе с MTP, не существует, все действия осуществляются через созданный экземпляр COMObject, путем получения каждого элемента в отдельности, а они существуют только в виде родительского или дочернего (в случае если текущий элемент - каталог) элементов от текущего. В общем, не всё там просто, хоть и не невозможно. И именно поэтому, это достаточно медленные операции...

Цитата Alexoner:
Чтобы проверять, когда телефон хоть и подключён, но не разблокирован (то есть доступа нет). »
Не каждый смартфон, подключается по MTP протоколу по умолчанию, иногда включается просто зарядка, тогда и будет появляться ошибка, т.к. подключения попросту нет. В этом случае, доступ к смартфону нужен будет обязательно.

Цитата Alexoner:
Интересно, в чём выражается неполноценное копирование и какие недостатки у MTP? »
Неточно выразился, речь не про копирование, как таковое, а про файловые операции именно с файловой системой...
Media Transfer Protocol

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 07-11-2020 в 19:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:45, 07-11-2020 | #15


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
двусторонний копировщик »
Скрипт обновил, т.к. обнаружился баг...

-------
scio me nihil scire. Ѫ


Отправлено: 08:19, 08-11-2020 | #16


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
В смысле поиск файла? »
Я неправильно выразился. Не наличия файлов на телефоне, а проверка наличия пути ресурса. То есть, когда телефон подключается к компьютеру, он виден в проводнике слева как подключённое устройство MTP. Если зайти в него, то там пусто, так как телефон заблокирован. И только после разблокировки через графический ключ пути появляются.
Впрочем, это не столь важная функция, а скорее как дополнительное удобство.
Более важно другое...

Вообще изначально задумка была такая:
- Скопировать файлы с телефона (это работает).
- Проверить по хеш-сумме скопированные файлы с ресурсом.
(так как были случаи, когда фото скопировались битыми. Это обнаружилось потом, а оригиналы уже были удалены).
- Если все файлы прошли проверку, то удалить их с телефона (возможно с предварительным запросом подтверждения у пользователя).

Скорость работы всей этой системы тоже не важна, главное чтобы каждый раз это вручную не делать, так как файлы лежат в разных папках и в разных разделах памяти телефона (во внутренней памяти, на sd-карте, фото, видео, заметки, аудиозаписи, скриншоты и другое).

Отправлено: 11:12, 08-11-2020 | #17


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить PM | Цитировать


Цитата Alexoner:
проверка наличия пути ресурса. »
Для чего? powershell выдаст ошибку, если пути не существует.
Скрипт подключением управлять "не умеет", так что если ресурс существует, он выдаст то, что доступно, если ресурсы не доступны, будет выдана ошибка...
Цитата Alexoner:
Проверить по хеш-сумме скопированные файлы с ресурсом. »
Что с чем сравнивать?
Цитата YuS_2:
Дело в том, что никакой древовидной файловой структуры при работе с MTP, не существует, все действия осуществляются через созданный экземпляр COMObject, путем получения каждого элемента в отдельности, а они существуют только в виде родительского или дочернего (в случае если текущий элемент - каталог) элементов от текущего. »
Ни размер файла, ни его хешсуммы по MTP недоступны... все действия с файлами осуществляются самим устройством и его внутренним ПО. Почитайте информацию по ссылке, которую я привел...
Цитата:
Таким образом, плеер, подключившийся как флэш-диск, полностью доверяется компьютеру; подключившийся по MTP — самостоятельно отвечает за хранение и целостность данных
т.е. если файл копируется битым, то ни скрипт, ни компьютер не могут с этим ничего поделать, за это отвечает сам смартфон, то бишь его аппаратно-программная часть, которая работает с внутренними ресурсами устройства.

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 08-11-2020 в 11:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:50, 08-11-2020 | #18


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Для чего? powershell выдаст ошибку »
Чтобы избежать выдачи красной ошибки. Наверное её как-то отлавливать можно. Надо изучить этот вопрос.

Статью читал, но некоторые моменты неправильно понял.
Выходит для проверки нужна проверочная программа установленная в телефоне, и только соединившись с ней (наверное через API) можно получить информацию?

Ну а хотя бы удалять файлы с телефона как-то можно?

Отправлено: 12:25, 08-11-2020 | #19


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1186
Благодарности: 497

Профиль | Отправить PM | Цитировать


Цитата Alexoner:
Чтобы избежать выдачи красной ошибки. »
так это показатель того, что присутствует ошибка и даже расшифровка есть. Зачем подавлять сообщение? Оно ничем не мешает работе.

Цитата Alexoner:
Выходит для проверки нужна проверочная программа установленная в телефоне »
Типа того. Но сомневаюсь, что по MTP можно получить что-то более-менее серьезное. Проще подключить устройство по сетке Wi-Fi и управлять файлами в самом устройстве, в том числе и копирование на комп.

Цитата Alexoner:
Ну а хотя бы удалять файлы с телефона как-то можно? »
если вместо метода CopyHere, воспользоваться методом MoveHere, то фактически произойдет удаление... чистого метода удаления нет.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:43, 08-11-2020 | #20



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 8 и 8.1 » Разное - Как взаимодействовать с файлами на смартфоне, подключенном к компьютеру через USB?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
При подключенном 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




 
Переход