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 :

[VBScript] Problème avec fin d'instruction attendue


Sujet :

VBScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut [VBScript] Problème avec fin d'instruction attendue
    Bonjour, je suis nouveau sur ce forum, je vous salue.

    J'ai un soucie avec un code que j'ai fait pour l'entreprise pour laquelle je travaille. Ce code doit lister les dossiers et les sous-dossier dans un répertoire et les partager sur le réseau, mais il me fait un erreur "Fin d'instruction attendu" a un moment donner, vers la fin et je ne sais pas ce que cela peut bien être.

    Je voudrais demander si vous pouviez me donner un indice sur mon problème.

    Erreur :

    Ligne : 60
    Caract. : 3
    Code : 800A401

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    option explicit
     
    'Définition de variable
    Dim foldername, objfso, objrootfolder, objsubfolder, stroutput
     
    'Demande à l'utilisateur l'emplacement du fichier
    foldername = inputbox("Quel dossier voulez-vous scanner ? (chemin UNC)")
     
    'Listage des dossiers et des sous-dossiers
    Set objfso = createobject("scripting.filesystemobject")
    Set objrootfolder = objfso.getfolder(foldername)
    Set objsubfolder = objrootfolder.subfolders
     
    'Boucle de listage
     
    	For Each objrootfolder in objsubfolder
    		stroutput = stroutput & objrootfolder.name
    		stroutput = stroutput &  vbCrLf
    	Next
     
    'Affichage des dossier à l'écran
    msgbox stroutput
     
    'Définition de variable
    'Dim outputfile
     
    'Création d'un fichier texte pour stocker les noms des dossiers
    'Set stroutput = objfso.createtextfile("C:\Result.txt")
     
    dim CreateFolder, CreateFile, oFSO, oFolder, oFile, oText
     
    CreateFolder = inputbox("Entrez le nom du dossier à créer")
    CreateFile = inputbox("Entrez le nom du fichier à créer")
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.CreateFolder("C:\" & CreateFolder)
    'Set oFile = oFSO.CreateTextFile("C:\" & CreateFolder & "\" & CreateFile & ".txt")
     
    Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile ,8,true)
     
    oText.WriteLine(stroutput)
     
    Const ForReading = 1, ForWriting = 2 
     
      Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile, ForReading)
    	while Not oText.AtEndOfStream 
    		wscript.echo oText.ReadLine
     
    	Const FILE_SHARE = 0
    	Const MAXIMUM_CONNECTIONS = 25
     
    		Dim objWMIService, objNewShare, strComputer
     
    		strComputer = "."
     
    		Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    		Set objNewShare = objWMIService.Get("Win32_Share")
    		errReturn = objNewShare.Create _
                    "C:\" & oText &", " & oText , FILE_SHARE, _
    		MAXIMUM_CONNECTIONS
     
    		Wscript.Echo errReturn
     
    	Wend
     
    	oText.Close
    Merci à l'avance pour toute aide apporter.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut

    Ligne 60 à 62, bien que ne connaissant pas l'objet objNewShare.Create, aprés un =, les paramétrés de fonction ou procédure doivent être encadrés de (...,...,.......)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Set objNewShare = objWMIService.Get("Win32_Share")
            errReturn = objNewShare.Create _
            ("C:\" & oText & ", " & oText, FILE_SHARE, _
            MAXIMUM_CONNECTIONS)
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Je voudrais préciser que (objNewShare) est le nom de la variable qui me permet de contenir l'information ressortie et par le fait même je ne comprend pas la réponse, car lorsque je met des parentèses il me ressort l'erreur :

    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
    Const ForReading = 1, ForWriting = 2 
      
      Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile, ForReading)
    	while Not oText.AtEndOfStream 
    		wscript.echo oText.ReadLine
    	
    	Const FILE_SHARE = 0
    	Const MAXIMUM_CONNECTIONS = 25
    	
    		Dim objWMIService, objNewShare, strComputer
    		
    		strComputer = "."
    		 
    		Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    	
    		Set objNewShare = objWMIService.Get("Win32_Share")
       --ici-->	errReturn = objNewShare.Create _
    		("C:\" & oText &", " & oText , FILE_SHARE, _
    		MAXIMUM_CONNECTIONS)
    
    		Wscript.Echo errReturn
    
    	Wend
    
    	oText.Close
    Ligne :74
    Caract.: 3
    Erreur : Cet objet ne gère pas cette propriété ou cette méthode

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Curieux
    avec ce
    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
    	Const FILE_SHARE = 0
    	Const MAXIMUM_CONNECTIONS = 25
     
    		Dim objWMIService, objNewShare, strComputer
     
    		strComputer = "."
     
    		Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    		Set objNewShare = objWMIService.Get("Win32_Share")
    	errReturn = objNewShare.Create _
    	("C:\" & oText &", " & oText , FILE_SHARE, _
    		MAXIMUM_CONNECTIONS)
     
    		msgbox errReturn
    pas d'erreur.
    Par contre avec ce
    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
    	Const FILE_SHARE = 0
    	Const MAXIMUM_CONNECTIONS = 25
     
    		Dim objWMIService, objNewShare, strComputer
     
    		strComputer = "."
     
    		Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    		Set objNewShare = objWMIService.Get("Win32_Share")
    	errReturn = objNewShare.Create _
    	"C:\" & oText &", " & oText , FILE_SHARE, _
    		MAXIMUM_CONNECTIONS
     
    		msgbox errReturn
    j'ai bien l'erreur Cet objet ne gère pas cette propriété ou cette méthode
    Donc ton erreur doit provenir d'une partie du code que tu ne nous mes pas , le gestionnaire d'erreur de l'éditeur VBS n'est pas des plus fiable, la ligne et le n° de colonne n'est pas garantie.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Tout le code VBS est dans mon premier post.

    Dans mon cas, que je met le chemin UNC entre parenthèse ou pas, il me fait une erreur. Mais elle n'est jamais à la même place. Si les parenthèse sont la, l'erreur ce situe sur la ligne du "errReturn = objNewShare.Create". Et lorsque les parenthèses ne sont pas la, bien l'erreur est au niveau du chemin UNC.

    Et c'était un wscript.echo avant que le msgbox apparaisse. Mais il me fait toujours les mêmes erreurs.


    PS : Je te remet TOUT le code pour t'éviter le retour en haut.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
     
    option explicit
     
    'Définition de variable
    Dim foldername, objfso, objrootfolder, objsubfolder, stroutput
     
    'Demande à l'utilisateur l'emplacement du fichier
    foldername = inputbox("Quel dossier voulez-vous scanner ? (chemin UNC)")
     
    'Listage des dossiers et des sous-dossiers
    Set objfso = createobject("scripting.filesystemobject")
    Set objrootfolder = objfso.getfolder(foldername)
    Set objsubfolder = objrootfolder.subfolders
     
    'Boucle de listage
     
    	For Each objrootfolder in objsubfolder
    		stroutput = stroutput & objrootfolder.name
    		stroutput = stroutput &  vbCrLf
    	Next
     
    'Affichage des dossier à l'écran
    msgbox stroutput
     
    'Définition de variable
    'Dim outputfile
     
    'Création d'un fichier texte pour stocker les noms des dossiers
    'Set stroutput = objfso.createtextfile("C:\Result.txt")
     
    dim CreateFolder, CreateFile, oFSO, oFolder, oFile, oText
     
    CreateFolder = inputbox("Entrez le nom du dossier à créer")
    CreateFile = inputbox("Entrez le nom du fichier à créer")
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.CreateFolder("C:\" & CreateFolder)
    'Set oFile = oFSO.CreateTextFile("C:\" & CreateFolder & "\" & CreateFile & ".txt")
     
    Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile ,8,true)
     
    oText.WriteLine(stroutput)
     
    Const ForReading = 1, ForWriting = 2 
     
      Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile, ForReading)
    	while Not oText.AtEndOfStream 
    		wscript.echo oText.ReadLine
     
    	Const FILE_SHARE = 0
    	Const MAXIMUM_CONNECTIONS = 25
     
    		Dim objWMIService, objNewShare, strComputer
     
    		strComputer = "."
     
    		Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    		Set objNewShare = objWMIService.Get("Win32_Share")
    		errReturn = objNewShare.Create _
    		("C:\" & oText &", " & oText , FILE_SHARE, _
    		MAXIMUM_CONNECTIONS)
     
    		msgbox errReturn
     
    	Wend
     
    	oText.Close

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Comme dit dans ma première intervention, je ne connais pas le type d'objet obtenu avec objNewShare.
    Pour autant, en recherchant à droite et à gauche, il semblerait qu'il faille 5 paramètres (à moins que certains soient optionnels.
    l'exemple retrouvé est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     errReturn = objNewShare.Create _
         ("C:\Finance", "FinanceShare", FILE_SHARE, _
             MAXIMUM_CONNECTIONS, "Public share for the Finance group.")
    il faut bien des ().



    Actuellement le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            errReturn = objNewShare.Create("C:\" & oText & ", " & oText, FILE_SHARE, MAXIMUM_CONNECTIONS)
    Il doit y avoir un problème de virgule pris comme littéral non pas comme séparateur de paramétrés, essais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            errReturn = objNewShare.Create("C:\" & oText, oText, FILE_SHARE, MAXIMUM_CONNECTIONS)
    permet de passer 4 paramètres, le 5éme semblant une option.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Non, cela ne fonctionne pas non plus, il me fait la même erreur " ...ne gère pas cette propriété ou cette méthode".

    Mais l'erreur n'est pas là, elle a toujours été une ligne plus haut, au niveau du errReturn = objNewShare.Create.

    Si quelqu'un d'autre à une idée pour aider a trouver une piste vers la solution, quelque soit-elle, je suis prêt a vous entendre.

  8. #8
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Pour commencer, voici les informations de Microsoft sur la méthode Create de la classe Win32_Share : http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Tu verras que cette méthode demande en paramètre des chaines de caractère (chemin et nom du partage, et optionnellement mot de passe ou description) et des entiers (type de partage, nombre de connexions max) [et éventuellement un "Win32_SecurityDescriptor" pour définir l'accès]
    Alors que toi tu passes en paramètre un objet "TextStream" (fichier texte ouvert), qui bien entendu provoque une erreur dans l'appel de la méthode.

    Tu peux vérifier le type de ta variable oText comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wscript.Echo TypeName(oText)
    Donc ce que tu peux faire pour commencer, c'est utiliser la fonction avec des paramètres statiques pour comprendre son fonctionnement, et ensuite utiliser des variables, mais correspondant à la définition de la méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    errReturn = objNewShare.Create ("C:\DirToShare", "DirToShare" , 0, 25)
    Wscript.Echo errReturn
    En espérant apporter des réponses utiles.
    Bonne continuation

  9. #9
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Merci Pitchalov.

    Je voudrais savoir si je peux quand même utiliser le fichier texte que je crée et où le nom de mes dossier sont inscrit pour lire dedans et ensuite créé des répertoires partager à leur nom.

  10. #10
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Oui tu peux le faire.
    Il faut pour cela parcourir le fichier texte et pour chaque entrée réaliser le partage réseau.
    La FAQ VBScript contient des exemples pour parcourir un fichier texte et réaliser les traitements de strings que tu vas lire.
    Reviens avec ton code si tu rencontres des difficultés.

    Bonne continuation

  11. #11
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Merci encore pitchalov
    Je voudrais encore savoir quelque truc s.v.p.


    Lecture ligne à ligne d'un fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Const ForReading = 1, ForWriting = 2 
    Dim oFso, f
     
      Set oFso = CreateObject("Scripting.FileSystemObject")
      Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading)
      while Not f.AtEndOfStream 
         wscript.echo f.ReadLine
      Wend
      f.Close
    Lecture de la totalité d'un fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Const ForReading = 1, ForWriting = 2 
      Dim oFso, f
     
      Set oFso = CreateObject("Scripting.FileSystemObject")
      Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading)
      Wscript.echo f.ReadAll
      f.Close
    Je voudrais savoir si le premier bout de code qui lit ligne par ligne, permet de lire et coupler avec un bout de code qui partage le dossier dans cette ligne passe à la ligne suivant lorsque, dans la boucle qui le fera revenir au début pour passer au dossier suivant, il passera automatiquement à la ligne suivante ? Est-ce que la fonction ce souvient elle-même de la ligne qu'elle a lu pour ne pas la relire, ou je dois ajouter un truc pour lui dire de passer à la suivante ?

    Merci

  12. #12
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    La méthode Readline te renvoie effectivement la ligne lue et passe à la suivante sans que tu aies à incrémenter d'autre variable.
    Tu peux donc utiliser ce code et l'associer à ta création de partage.

    Voici un exemple en reprenant tes bouts de code :
    Exemple de fichier CSV (fichier en entrée formaté comme tel : Chemin;Nom) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\dossier1;dossier1
    c:\dossier2;dossier2
    Exemple de code vbScript :
    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
    Const ForReading = 1, ForWriting = 2
    Const FILE_SHARE = 0, MAXIMUM_CONNECTIONS = 25
    Dim objWMIService, objWMIShare, strComputer, oFso, f, arrTmpLine
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objWMIShare = objWMIService.Get("Win32_Share")
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading)
    Do Until f.AtEndOfStream 
    	arrTmpLine = Split(f.ReadLine, ";")
    	Wscript.Echo "Partage du répertoire <" & arrTmpLine(0) & "> avec le nom <" &  arrTmpLine(1) & ">"
    	errReturn = objWMIShare.Create arrTmpLine(0), arrTmpLine(1) , FILE_SHARE, MAXIMUM_CONNECTIONS
    	Wscript.Echo errReturn
    Loop
    Ensuite à toi de l'adapter au contenu de ton fichier (et à mettre plus de contrôles peut-être).

    Bonne continuation

  13. #13
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Ouah, merci !!

    Ça va tellement me simplifier et rendre ce code plus facile, surtout que l'option B aurait été d'appeler une variable dans un batch file.

    Je reviendrais dire si tout fonctionne bien, merci encore.

  14. #14
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Bonjour, j'ai tester le code que vous m<avez monter, pitchalov (avec quelque modification d'adaptation et je dois avouer que la fonction "split" me laisse perplex qu'en ta l'erreur qu'elle me retourne.

    Je reçois l'erreur suivante :

    Ligne : 60
    Caract. : 4
    Erreur : Indice en dehors de la plage: '[Number: 1]'
    Code : 800A0009

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    option explicit
     
    'Définition de variable
    Dim foldername, objfso, objrootfolder, objsubfolder, stroutput
     
    'Demande à l'utilisateur l'emplacement du fichier
    foldername = inputbox("Quel dossier voulez-vous scanner ? (C:\)")
     
    'Listage des dossiers et des sous-dossiers
    Set objfso = createobject("scripting.filesystemobject")
    Set objrootfolder = objfso.getfolder(foldername)
    Set objsubfolder = objrootfolder.subfolders
     
    'Boucle de listage
     
    	For Each objrootfolder in objsubfolder
    		stroutput = stroutput & objrootfolder.name
    		stroutput = stroutput &  vbCrLf
    	Next
     
    'Affichage des dossier à l'écran
     
    msgbox stroutput
     
    'Création d'un fichier texte pour stocker les noms des dossiers
     
    Dim CreateFolder, CreateFile, oFSO, oFolder, oText
     
    	CreateFolder = inputbox("Entrez le nom du dossier à créer")
    	CreateFile = inputbox("Entrez le nom du fichier à créer")
     
    		Set oFSO = CreateObject("Scripting.FileSystemObject")
    		Set oFolder = oFSO.CreateFolder("C:\" & CreateFolder)
     
    'Crée le fichier qui contiendra les noms des dossier à partager
     
    		Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile ,8,true)
     
    		oText.WriteLine(stroutput)
     
    'Définition des variables
     
    Const ForReading = 1, ForWriting = 2 
    Const FILE_SHARE = 0, MAXIMUM_CONNECTIONS = 25
    Dim objWMIService, objNewShare, strComputer, arrTmpLine
     
    		strComputer = "."
     
    		Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    		Set objNewShare = objWMIService.Get("Win32_Share")
     
    'Ouverture du dossier et création des partages (en boucle jusqu'à la fin du fichier)
     
    		Set oFSO = CreateObject("Scripting.FileSystemObject")
    		Set oText = oFSO.OpenTextFile("C:\" & CreateFolder & "\" & CreateFile, ForReading)
     
    		Do Until oText.AtEndOfStream 
    			arrTmpLine = Split(oText.ReadLine, vbcrlf)
    			Wscript.Echo "Partage du répertoire <" & arrTmpLine(0) & "> avec le nom <" &  arrTmpLine(1) & ">"
    			errReturn = objNewShare.Create (arrTmpLine(0), arrTmpLine(1) , FILE_SHARE, MAXIMUM_CONNECTIONS)
    			Wscript.Echo errReturn
    		loop
     
    	oText.Close
    J'aimerais que vous m'aidiez à cerner le problème, si vous y voyez un indice de ce que c'est. J'ai unpeu tout essayer autour de la fonction split.

    Je vous en serais encore un fois reconnaissant, merci.

  15. #15
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrTmpLine = Split(oText.ReadLine, vbcrlf)
    Citation Envoyé par Script56.CHM
    ReadLine
    Lit une ligne entière (jusqu'au caractère de nouvelle ligne mais non compris celui-ci) à partir d'un fichier TextStream, et renvoie la chaîne obtenue.

    Split(expression[, delimiter[, count[, compare]]])
    Renvoie un tableau à une dimension commençant par zéro contenant le nombre spécifié de sous-chaînes.
    expression
    Expression de chaîne contenant des sous-chaînes et des séparateurs. Si l'argument expression est une chaîne de longueur nulle, la fonction Split renvoie un tableau vide, c'est-à-dire un tableau ne comportant ni éléments, ni données.
    delimiter
    Facultatif. Caractère de chaîne utilisé pour identifier les limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé comme séparateur par défaut. Si l'argument delimiter est une chaîne de longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyée.
    Dans oText.ReadLine ne contenant pas de vbCrlf ou de vbNewline, ta variable tableau arrTmpLine est donc d'indice zéro et contient la phrase du fichier lut avec ReadLine.

    Uploader Script56.CHM Où trouver l'aide en ligne pour VBScript ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  16. #16
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Merci ProgElecT, il sufissait de remplacer tout les (1) des arrTmpLine par des (0). Je vais aussi dire à mon collègue que (" ") qu'une espace entre guillemets dans une fonction split est un genre d'équivalent pour une espace quand il ni a pas de délimiter.

    Donc la mon code fonctionne et il fait ce que j'attendais de lui, sauf que :

    Il ne partage pas les dossiers et il me fait l'erreur "Indice en dehors de la plage: '[Number: 0]'" au lieu du number: 1. Je me demande pourquoi, parce que avec "AtTheEndOfStrem" il devrait répondre "true" et quitter la boucle et ferme le oText avec le .close. Et ainsi avoir PARTAGER les dossiers. Ce qui n'est pas fait.

    Une idée ?

  17. #17
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until oText.AtEndOfStream
    Until , il faut réétudier l'utilisation et l'endroit ou est utilisé ce terme.
    Où trouver l'aide en ligne pour VBScript ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  18. #18
    Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestionnaire

    Informations forums :
    Inscription : Juin 2013
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Disons que ça ne m'aide pas vraiment dans la compréhension de l'erreur [number: 0].

    Je voudrais plutôt savoir pourquoi un seconde erreur alors que do until devrait répondre true et quitter la boucle vers .close.

    PS : Le lien mène a une version de VB script et je ne veux pas faire de mise à jour.

  19. #19
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Disons que ça ne m'aide pas vraiment dans la compréhension de l'erreur [number: 0].

    Je voudrais plutôt savoir pourquoi un seconde erreur alors que do until devrait répondre true et quitter la boucle vers .close.

    PS : Le lien mène a une version de VB script et je ne veux pas faire de mise à jour.
    Non
    Quand tu arrives sur la page http://www.microsoft.com/fr-fr/downl...s.aspx?id=1406
    tu cliques le bouton Télécharger puis tu coches scd56fr.exe et enfin bouton Suivant.
    scd56fr.exe et l’installateur du fichier d'aide pour JScript et VBScript
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  20. #20
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 176
    Points
    17 176
    Par défaut
    Peux tu remettre la ligne du split arrTmpLine = Split(oText.ReadLine,??????)que tu utilises
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. fin d'instruction attendue(erreur 800A0400 ) en vbscript
    Par regisyves dans le forum VBScript
    Réponses: 4
    Dernier message: 06/06/2010, 22h55
  2. vbs erreur : fin d'instruction attendue
    Par Armadeus dans le forum Windows Vista
    Réponses: 0
    Dernier message: 25/08/2009, 10h28
  3. problème avec instruction "RemoveItem"
    Par audrey_desgres dans le forum Access
    Réponses: 4
    Dernier message: 15/06/2005, 09h26
  4. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56

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