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

VBScript Discussion :

execution de commande dans VBS


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut execution de commande dans VBS
    Bonjour,

    mon script est censsé scanner les 4 Premiers niveau d'une arborecence et d'executer une commande SETACL sur chacun d'eux.
    envoyer le resultat dans un fichier qui à pour nom le chin du repertoire scanné

    probleme j'ai du mal à integrer ma commande dans le script.

    Message d'erreur :
    ](31, 44) Erreur de compilation Microsoft VBScript: Fin d'instruction attendue
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    Dim oFSO,oFld
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    stRep = "d:\users"
    LectRep stRep 
    Dim Subnumber,Chemin 
     
    Subnumber = 0
    '
    ' Fonction récursive de parcours de répertoire
    '
    Sub LectRep (stR)
    Dim Chemin_def
    Do While Subnumber <> 4
     For each oFld in  oFSO.GetFolder(stR).SubFolders
     Subnumber = Subnumber + 1
     Chemin = Replace(oFld.Path,"\","-")
     Chemin_def = Replace(Chemin,":","_")
       Wscript.Echo "--------------- " & oFld.PAth & "-----------------"
      WScript.Echo Chemin_def
       Commande (oFld.PATH)   
       LectRep oFld.PATH
     Next
    Loop
    end sub
    '
    ' commande à executer
    '
    Sub Commande (stR)
    Set fso2 = CreateObject("Scripting.FileSystemObject")
    set shl = createobject("wscript.shell")
    shl.run "cmd  /K setacl.exe -on -ot file -actn list -lst f:sddl;w:d,s,o,g;i:n;s:y -rec no -bckp C:\LOGS\ACL\"Chemin_def".txt",0,True
    End sub

    Merci de votre aide

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    salut ,

    Un problème de " ..
    - En Vbscript l'opérateur de concaténation de chaine est le : &
    - Si tu dois mettre des " dans une chaine il faut les doubler..

    mieux vaut passer par une variable chaine intermédiaire pour ta commande ce qui te permet de l'afficher :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (...)
    Dim stCde
    stCde = "cmd  /K setacl.exe -on -ot file -actn list -lst f:sddl;w:d,s,o,g;i:n;s:y -rec no -bckp C:\LOGS\ACL\" & Chemin_def & ".txt"
    msgbox stCde
    shl.run stCde,0,True

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    Merci cela fonctionne sur le premier niveau.
    cependant je n'arrive pas à passer au niveau en dessous.
    je n'ai pas de message d'erreur.
    mon prompt continu de touner sans fin.

    j'ai juste modifier la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stCde = "cmd  /K setacl.exe -on" &" " & oFld.Path & " " &"-ot" & " " &"file"& " " &"-actn" & " " &"list" &" " &"-lst" & " " &"f:sddl;w:d,s,o,g;i:n;s:y"&" "&"-rec"&" "&"no"&">"& " " &"C:\LOGS\ACL\" & Chemin_def & ".txt"
    Merci pour votre Aide

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par micka180 Voir le message
    ....
    j'ai juste modifier la commande

    ...
    pourquoi ? éclater ta chaine en plusieurs petite chaine est inutile .. !

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    Car sans cela ma commande est de la forme :
    setacl.exe -ond:\users\A1-ot
    les options de la commande ne sont pas separées, ce qui fait planter la commande.

    j'utilise les "" comme espace.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 125
    Par défaut
    voila ce que j'obtiens avec execution de commande.

    --------------- D:\Users\A1-----------------
    D-Users-A1
    sans execution de commande

    --------------- D:\Users\A1-----------------
    D-Users-A1
    --------------- D:\Users\A1\A2-----------------
    D-Users-A1-A2
    --------------- D:\Users\A1\A2\A3-----------------
    D-Users-A1-A2-A3
    --------------- D:\Users\A1\A2\A3\A4-----------------
    D-Users-A1-A2-A3-A4
    --------------- D:\Users\B1-----------------
    D-Users-B1
    --------------- D:\Users\B1\B2-----------------
    D-Users-B1-B2
    --------------- D:\Users\B1\B2\B3-----------------
    D-Users-B1-B2-B3
    --------------- D:\Users\B1\B2\B3\B4-----------------
    D-Users-B1-B2-B3-B4

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par micka180 Voir le message
    Car sans cela ma commande est de la forme :

    les options de la commande ne sont pas separées, ce qui fait planter la commande.

    j'utilise les "" comme espace.
    non tu n'utilise pas les "" comme espace tu concatène ta chaine avec un espace ... il te suffit de mettre directement l'espace dans ta chaine pas la peine d'utiliser 2 chaines...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stCde = "cmd  /K setacl.exe -on " & oFld.Path & " -ot file -actn list -lst f:sddl;w:d,s,o,g;i:n;s:y -rec no> C:\LOGS\ACL\" & Chemin_def & ".txt"
    ensuite pour ta boucle sans fin ...dans ta procédure command à quoi sert la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set fso2 = CreateObject("Scripting.FileSystemObject")
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set shl = createobject("wscript.shell")
    j'aurais bien mis cette ligne en dehors de ta procédure (comme oFso) de façon à ce que shl soit une variable globale initialisé une seule fois et pas à chacun de tes répertoires..

    pour tenter de comprendre ce qui ce passe dans ta boucle rajoute une ligne affichant le répertoire testé par exemple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Commande (stR)
    wscript.echo stR
    stCde = "cmd  /K setacl.exe -on " & oFld.Path & " -ot file -actn list -lst f:sddl;w:d,s,o,g;i:n;s:y -rec no> C:\LOGS\ACL\" & Chemin_def & ".txt"
    shl.run stCde,0,True
     
    End sub
    Il me semble aussi incongru le fait que tu n'utilise pas le paramètre stR dans ta commande ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/09/2012, 16h32
  2. Execution de commandes dans un find
    Par lavazavio dans le forum BSD
    Réponses: 6
    Dernier message: 16/09/2012, 10h55
  3. [2K5] Execution de commande dans un curseur
    Par duc@ti dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/06/2008, 14h46
  4. Executer commande dans un processus fils !
    Par jérôme.D dans le forum POSIX
    Réponses: 6
    Dernier message: 23/11/2006, 22h14
  5. [MySQL] executer une commande php contenu dans une variable
    Par Stopher dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2006, 15h44

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