S'il est vrai que les téléphones Android utilisent MTP pour se connecter aux ordinateurs lorsqu'ils sont en mode "Transfert de fichiers", alors PowerShell est une solution, j'ai juste répondu à cela sur StackOverflow : https://stackoverflow.com/a/75543733/3090890
Copie légèrement modifiée de ma réponse sur StackOverflow ci-dessous.
J'ai trouvé ce script PowerShell : https://github.com/nosalan/powershell-mtp-file-transfer/ Avertissement : je ne suis pas l'auteur du script, les crédits lui reviennent ! Juste pour cette réponse, j'ai copié et collé des extraits de code de la source liée pour lui fournir quelques explications.
Le truc pour accéder au téléphone, qui devrait être en mode "Transfert de fichiers" lorsqu'il est connecté via USB, se trouve dans cette partie :
$phoneName = "Nokia 7.2"
$o = New-Object -com Shell.Application
$rootComputerDirectory = $o.NameSpace(0x11)
$phoneDirectory = $rootComputerDirectory.Items() | Where-Object {$_.Name -eq $phoneName} | select -First 1
Ensuite, vous pouvez accéder au répertoire que vous souhaitez :
$sourceFolder = $phoneDirectory
$phoneFolderName = "Internal shared storage\DCIM\Camera"
foreach($pathSegment in ($phoneFolderName -split "\\"))
{
$sourceFolder = $sourceFolder.GetFolder.Items() | Where-Object {$_.Name -eq $pathSegment} | select -First 1
if($sourceFolder -eq $null)
{
throw "Not found $phoneFolderName folder"
}
}
Et enfin copier les éléments du sourceFolder atteint vers la destination :
function Get-FullPathOfMtpDir($mtpDir)
{
$fullDirPath = ""
$directory = $mtpDir.GetFolder
while($directory -ne $null)
{
$fullDirPath = -join($directory.Title, '\', $fullDirPath)
$directory = $directory.ParentFolder;
}
return $fullDirPath
}
$targetFolder = "E:\Test"
$destDirShell = (new-object -com Shell.Application).NameSpace($targetFolder)
$fullSourceDirPath = Get-FullPathOfMtpDir $sourceFolder
foreach ($item in $sourceFolder.GetFolder.Items())
{
$itemName = ($item.Name)
$fullFilePath = Join-Path -Path $targetFolder -ChildPath $itemName
if(Test-Path $fullFilePath)
{
Write-Host "Element '$itemName' already exists"
}
else
{
$copiedCount++;
Write-Host ("Copying #{0}: {1}{2}" -f $copiedCount, $fullSourceDirPath, $item.Name)
$destDirShell.CopyHere($item)
}
}
Write-Host "Copied '$copiedCount' elements from '$fullSourceDirPath'"
Il est également possible de copier des fichiers vers le téléphone. Ici, je change la cible et la source à titre d'exemple, et je copie "E:\Test\atestfileonpc.txt" dans le dossier "DCIM\Camera" du téléphone :
$sourceDirShell = (new-object -com Shell.Application).NameSpace($targetFolder)
$targetDirShell = $sourceFolder
$item = $sourceDirShell.Items() | Where-Object {$_.Name -eq "atestfileonpc.txt"} | select -First 1
targetDirShell.GetFolder.CopyHere($item)
2 votes
Le fait que les implémentations compatibles MTP de Linux telles que gphoto2 offrent un moyen de scripter le téléchargement suggère que cela devrait être possible sur Windows d'une manière ou d'une autre, en supposant que le Lecteur Windows Media ne bloque pas d'une manière ou d'une autre tout autre logiciel d'accéder à l'interface MTP USB... Moi aussi, j'aimerais savoir si c'est possible.
2 votes
J'ai abandonné en essayant de trouver une solution pour cela avec mon appareil Android MTP et finalement installé un serveur WebDAV sur mon appareil. Cela pourrait être monté comme un lecteur réseau, bien que lentement.
0 votes
@MarkBooth J'ai essayé le serveur WebDAV mais il semble que la plupart des fichiers que je transfère soient corrompus (plus de 90%)...
0 votes
Autre solution pour Android allant dans l'autre sens, en personnalisant l'appareil connecté : 1, 2, 3.