IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

syntaxe du Shell Vbnet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Par défaut syntaxe du Shell Vbnet
    bonjour
    j'ai cherché dans les différents forums . Essayé de coder sans succès
    et surtout je n'arrive pas à compendre alors pour coder c'est un peu dur

    mon pbme : passer en shell une commande "DOS" du type
    adb devices > liste.txt (simple non?)
    ou
    adb backup -f X:\android\bckup xxx\backup.ab

    je vois (et je sais) que les espaces perturbent la syntaxe du shell et qu'il convient d'utiliser des "" mais je ne comprends pas quand et ou il faut les mettre
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("""ADB\adb.exe ""devices """ > """D:\periph.txt""", AppWinStyle.NormalFocus, True, 30000)
    ne marche pas par exemple .. Ballot non ?
    j'ai essayé pas mal de combinaisons sans succès !!

    quelqu'un peut il m'aider , et surtout expliquer au neu-neu que je suis , ce qui doit être fait et pourquoi ?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour gritchefr,

    1 - adb.exe n'est pas une commande DOS mais un outil en ligne de commande !
    2 - adb.exe doit avoir un chemin absolu avant d'être appelé !
    3 - Une commande DOS est appelée à l'aide de "cmd.exe".

    Enfin pour lister un répertoire (dans un fichier) à l'aide d'une commande DOS en argument de la méthode "Shell" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Shell("cmd.exe /c dir C:\boot > C:\list.txt", AppWinStyle.Hide, True)
    PS1 : préférez utiliser la classe "Process" au lieu de "Shell" !

    PS2 : pour l'histoire des guillemets, il faut revoir les bases du langage.

    Cdlt

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Par défaut
    Bonjour et merci wallace1

    Mes mots étaient effectivement malheureux . adb n'est pas une commande DOS mais comme habituellement je le lance manuellement via une invite de commande j'ai pris un raccourci.

    Pour expliquer j'ai (lachement) pompé un code trouvé sur la toile et essayé de me l'adapter pour mes besoins :
    http://http://forum.xda-developers.c....php?t=2315695

    La méthode utilisée par le developpeur plantait chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Shell("""ADB\adb.exe"" backup -f" & TextBox1.Text & "\" & TextBox2.Text & "-apk -system -full -all", AppWinStyle.NormalFocus, True, 30000)
        End Sub
    et c'est pourquoi après maintes tentatives et recherches j'ai posé ma question.

    En attendant une réponse j'avais quand même réessayé / réessayé et comme rien ne marchait , je suis passé à un codage comme celui que vous proposez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Ordre = "cmd.exe /c ADB\adb.exe backup -f " & Chr(34) & TextBox1.Text & "\" & TextBox2.Text & Chr(34) & " -noshared -noapk -nosystem -all"
            Shell(Ordre, AppWinStyle.NormalFocus, True, -1)
    qui a le mérite de fonctionner et qui m'a permis de continuer mon "outil presque perso" de sauvegarde Android.
    Cela fonctionne en effet et c'est moins prise de tête ...
    Mais j'avoue que je n'ai rien compris aux doubles quotes, triples quotes du premier ordre et que cela m'embête et donc je suis preneur d'une explication même si elle ramène aux fondamentaux du langage .. Je remercierai bien bas toute personne qui pourra m'éclairer...

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Pas de soucis. On est là por aider après tout.

    Donc pour les doubles quotes :


    - Elle permettent de délimiter une chaîne de caractères.

    Pour afficher ceci à l'écran :
    Titi
    Je procède ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim t as string = "Titi" 
    Msgbox(t)
    - Lorsqu'une chaîne de caractère contient un double quotes, alors lorsqu'on tape la chaîne et qu'on arrive à ce fameux double quotes, il faut le faire suivre d'un autre double quote et on continue à taper le reste de la chaîne sans oublier de terminer par le double quotes de fin de chaîne !
    NB : le doubler fait office de caractère d'échappement. Ainsi il n'est pas considérer comme le double quotes de fin de chaîne.

    Pour afficher ceci à l'écran :
    Titi"Tata
    Je procède ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim tt as string = "Titi""Tata"
    Msgbox(tt)
    Si tu ne souhaites pas t'emmêler les pinceaux tu peux tout aussi bien remplacer au sein de ta chaîne les doubles quotes par ceci :

    Pour reprendre l'exemple ci dessus.
    Pour afficher ceci à l'écran :
    Titi"Tata
    Je peux aussi procéder ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim tt as string = "Titi" & Chr(34) & "Tata"
    Msgbox(tt)

    Je reprends mon exemple dans un précédent message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("cmd.exe /c dir C:\boot > C:\list.txt", AppWinStyle.Hide, True)
    Lorsqu'on mentionne des chemins dans des paramètres de ligne de commande il est plus que recommandé de le délimité par des doubles quotes car sinon lorsque le chain contient des espaces il arrive que l'argument ne soit pas pris en compte ! Ce qui est souvent source d'erreur.
    Donc il faudrait écrire la ligne ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("cmd.exe /c dir ""C:\boot"" > ""C:\list.txt"", AppWinStyle.Hide, True)
    ou ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("cmd.exe /c dir " & Chr(34) &  "C:\boot" & Chr(34) & " > " & Chr(34) & "C:\list.txt" & Chr(34), AppWinStyle.Hide, True)


    Voilà pour l'explication mais si ce n'est pas assez clair il faut refaire un tour dans les bouquins.


    A+

Discussions similaires

  1. [shell] syntax error: unexpected end of file
    Par travailmichel dans le forum Linux
    Réponses: 1
    Dernier message: 10/02/2011, 15h34
  2. Syntax error incompréhensible dans script shell!
    Par Sakesannin dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/01/2010, 18h41
  3. [Shell] cherche code syntaxe en shell
    Par nenekes dans le forum Linux
    Réponses: 8
    Dernier message: 30/01/2008, 08h01
  4. Syntaxe dans un script shell
    Par cubepiege dans le forum Linux
    Réponses: 5
    Dernier message: 27/09/2005, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo