none
PowerShell avec ADB - Chemin d'un fichier sur un téléphone RRS feed

  • Question

  • Bonjour,

    Pour un projet scolaire, nous devons réaliser un script PowerShell utilisant des fonctionnalités plus ou moins basiques. Mon choix s'est porté sur la réalisation d'un script me permettant de sauvegarder des fichiers multimédias (images, vidéos et musiques) d'un téléphone connecté en USB à l'ordinateur sur lequel le script devrait fonctionner. Pour cela, j'utilise ADB que j'essaierai d'installer automatiquement par après.

    Pour le moment, la partie problématique ressemble à cela:

    foreach ($file in .\adb.exe shell ls -R | Where-Object {$_ -match ".mp3" -or $_ -match ".flac" -or $_ -match ".wav"}) { echo $file .\adb.exe pull -p $cheminFichier C:\Users\admin\Desktop\test }

    Mon problème est de trouver la commande permettant de récupérer pour chaque fichier son chemin sur le téléphone afin de pouvoir le transférer sur l'ordinateur grâce à la commande "pull" d'ADB.

    Je me permet de poster cette question sur ce forum car mon projet est peu avancé et la date d'échéance s'approche dangereusement.

    Au passage, n'hésitez pas à me donner des conseils, cela m'aidera beaucoup!

    Merci de votre compréhension et de vos réponses!

    dimanche 18 septembre 2016 14:55

Toutes les réponses

  • Salut,

    que contient ton objet $File ? Un objet, une simple string ou une string structuré ?

    Pour l'opérateur -match il faut échapper le point '\.mp3 et tu peux aussi construire une alternative '\.mp3|\.flac|\.wav' en lieu et place des appels à  -or


    Beatus, qui prodest, quibus potest.

    lundi 19 septembre 2016 10:23
    Modérateur
  • Bonjour,

    Je ne peux pas faire de $file.GetType(). Je pense que c'est parce qu'elle se trouve dans une boucle foreach, juste?

    Du coup, est-ce que ma variable $file est une String, ce qui rend normal le fait que je ne trouve pas le moyen d'obtenir le chemin?

    En attendant, je met toute la fonction que j'utilise actuellement:

    function transfertMusique{
    foreach($file in .\adb.exe shell ls -R | Where-Object {$_ -match "\.mp3" -or $_ -match "\.flac" -or $_ -match "\.wav"})
    {
    Write-Host $file
    
    $cheminFichier = "Là est tout le problème"
    
    .\adb.exe pull $cheminFichier C:\Users\admin\test
    }
    }

    En sachant que la location est mise sur le bureau où se trouve ADB actuellement.

    Merci de votre réponse!

    mardi 20 septembre 2016 12:48
  • >>je pense que c'est parce qu'elle se trouve dans une boucle foreach, juste?

    Non, une boucle ne modifie pas le type de l'objet.

    >>Du coup, est-ce que ma variable $file est une String, ce qui rend normal le fait que je ne trouve pas le moyen d'obtenir le chemin?

    Oui.

    Partons sur l'hypothèse la plus probable, ton prg externe renvoie des chaines simple contenant un nom de chemin+un nom de fichier.

    Il te faut extraire (parsing) la partie chemin selon la syntaxe ADB.exe.

    Que donne la commande pull avec le nom complet ?


    Beatus, qui prodest, quibus potest.

    mardi 20 septembre 2016 19:07
    Modérateur