¿Cómo copio archivos de un iPhone usando la línea de comando?

¿Cómo copio archivos de un iPhone usando la línea de comando?

Quiero usar la línea de comando para acceder a los archivos en el iPhone en lugar de usar Windows Ctrl+ C, Ctrl+ Vpara copiar todos los archivos a mi PC.

Eché un vistazo para ver si podía asignar "Esta PC" o cualquiera de las otras líneas como una unidad de red, pero no pude encontrar cómo.

Como se muestra a continuación, tengo la intención de copiar las carpetas del iPhone usando la línea de comando, probablemente el símbolo del sistema estilo DOS.

Esta PC en el teléfono

Respuesta1

Si desea evitar el software de terceros,Potencia ShellPuede utilizar el shell.applicationobjeto com para acceder a carpetas virtuales y dispositivos MTP. Aquí hay un script de copia simple:

$pcDestinationPath = 'C:\Wherever\You\Want'
$phoneRelativePath = 'Internal Storage\DCIM'

$shell  = New-Object -com shell.application

$PhoneFolder = ($shell.NameSpace("shell:MyComputerFolder").Items() | where Type -match 'Mobile Phone|Portable Device').GetFolder

### To access a subfolder, you have to "walk" its path

$SourceFolder = $phoneRelativePath.Split('\') |
ForEach-Object -Begin {
    $comFolder = $PhoneFolder
} -Process {
    Try
    {
        $comFolder = ($comFolder.Items() | where {$_.IsFolder} | where Name -eq $_).GetFolder
    }
    Catch
    {
        Write-Error 'Failed to parse $DeviceFolderPath'
    }
} -End {
    $comFolder
}

### Get comFolder object for $pcDestinationPath

If ( ! (Test-Path $pcDestinationPath) )
{
    mkdir $pcDestinationPath -Force | out-null
}
$pcDestinationFolder = $shell.NameSpace($pcDestinationPath)
    
### Option 1: Copy $SourceFolder as a single item

$pcDestinationFolder.CopyHere($SourceFolder.Self)

### Option 2: Copy *the contents of* $SourceFolder as a collection of items

$pcDestinationFolder.CopyHere($SourceFolder.Items())

### Option 3: Copy selected items from $SourceFolder individually

$SourceFolder.Items() | where {<Test-Expression(s)>} |
ForEach-Object {
    $pcDestinationFolder.CopyHere($_)
}  

### FolderItem properties available for testing:
###   - IsFolder
###   - IsLink
###   - ModifyDate
###   - Name
###   - Parent
###   - Path
###   - Size
###   - Type

Cada directorio tiene unCarpetaobjeto y unElemento de carpetaobjeto asociado a él. Pueden hacer referencia entre sí con las propiedades .Selfy GetFolder:

       |--------> Folder.Self ------->|
    Folder                         FolderItem
       |<--- FolderItem.GetFolder <---|

Referencias:

información relacionada