VBScript de création de repertoire

VBScript de création de repertoire - VB/VBA/VBS - Programmation

Marsh Posté le 05-12-2005 à 13:50:58    

Bonjour,
 
J'ai un problème que je n'arrive pas a résoudre donc je solicite votre aide.
 
Je dois créer un script qui créer des repertoires et aprés qui les transforme en repertoire virtuelle pour un serveur IIS.
Je pense que ce script marche pour la création de repertoire virtuel.
 
Cependant j'ai un problème car le script crée les repertoires (enfin en partie..).
Les repertoires viennent d'une liste.txt, entrer les un à la suite des autres.
 
Problèmes :
 
- Il ne crée jamais le dernier repertoire de la liste ( problème dans la boucle ?)
- Dans les repertoires créer il recrée les repertoires de la liste.
 
ex :
 
liste.txt :
rep1
rep2
rep3
 
Il crée les repertoires 1 et 2 mais pas le 3eme.
Dans les rep 1 et 2 il recreera les repertoires 1 et 2.
 
Voila le code !
 

Code :
  1. 'Declaration des variables
  2. Dim ligne
  3. Dim fsoopen, fsocreate, f, fexist, servobj, vdirobj
  4. 'msgbox "hop"
  5. 'Creation des objets fso pour l'ouverture, la creation de repertoire et le test d'existence de repertoire
  6. Set fsoopen = CreateObject("scripting.filesystemobject" )
  7. Set fsocreate = CreateObject("scripting.filesystemobject" )
  8. Set fexist = CreateObject("scripting.filesystemobject" )
  9. Set liste = fsoopen.opentextfile("C:\SCRIPT\listelogin.txt", 1)
  10.          ligne = liste.readline '1ere lecture : 1ere ligne
  11.  'msgbox ligne
  12.          Do While liste.atendofstream <> true
  13.   If fexist.Folderexists(ligne) <> true then
  14.    Set f = fsocreate.CreateFolder("C:\SCRIPT\" & ligne) 'creation du répertoire
  15.    Set servobj = GetObject("IIS://localhost/W3SVC/3/ROOT" ) 'le paramétre 3 nous renseigne qu'il s'agit de la 3eme zone (zone eleve), c'est ici que sont cree les repertoires virtuels
  16.    if (err<>0) then
  17.     msgbox "probleme d'ouverture du chemin du serveur web"
  18.    end if
  19.    Set vdirobj = servobj.create("IISWebVirtualDir", ligne)
  20.    vdirobj.Path = "c:\SCRIPT\" & login
  21.    vdirobj.AccessRead = True
  22.    vdirobj.AccessWrite = True
  23.    vdirobj.EnableDirBrowsing = False
  24.    vdirobj.AppFriendlyName = "test " & ligne
  25.    vdirobj.SetInfo
  26.    ligne = liste.readline
  27.   else
  28.    ligne = liste.readline
  29.   End if
  30.  Loop


 
 
Merci beaucoup pour votre aide car je desespere.
 
A+

Reply

Marsh Posté le 05-12-2005 à 13:50:58   

Reply

Marsh Posté le 05-12-2005 à 14:34:20    

En réorganisant un peu la boucle comme ci-après, cela devrait mieux marcher.

Code :
  1. 'Declaration des variables
  2. Dim ligne
  3. Dim fsoopen, fsocreate, f, fexist, servobj, vdirobj
  4. 'msgbox "hop"
  5. 'Creation des objets fso pour l'ouverture, la creation de repertoire et le test d'existence de repertoire
  6. Set fsoopen = CreateObject("scripting.filesystemobject" )
  7. Set fsocreate = CreateObject("scripting.filesystemobject" )
  8. Set fexist = CreateObject("scripting.filesystemobject" )
  9. Set liste = fsoopen.opentextfile("C:\SCRIPT\listelogin.txt", 1)
  10.         Do Until liste.atendofstream
  11.             ligne = liste.readline
  12.             'msgbox ligne
  13.             If fexist.Folderexists(ligne) <> true then
  14.    
  15.                 Set f = fsocreate.CreateFolder("C:\SCRIPT\" & ligne) 'creation du répertoire
  16.                 Set servobj = GetObject("IIS://localhost/W3SVC/3/ROOT" ) 'le paramétre 3 nous renseigne qu'il s'agit de la 3eme zone (zone eleve), c'est ici que sont cree les repertoires virtuels
  17.                 if (err<>0) then
  18.                     msgbox "probleme d'ouverture du chemin du serveur web"
  19.                 end if
  20.                
  21.                 Set vdirobj = servobj.create("IISWebVirtualDir", ligne)
  22.                 vdirobj.Path = "c:\SCRIPT\" & login
  23.                 vdirobj.AccessRead = True
  24.                 vdirobj.AccessWrite = True
  25.                 vdirobj.EnableDirBrowsing = False
  26.                 vdirobj.AppFriendlyName = "test " & ligne
  27.                 vdirobj.SetInfo
  28.                
  29.             End if
  30.            
  31.         Loop

Reply

Marsh Posté le 05-12-2005 à 14:42:49    

Merci pour ta réponse mais il zap toujours mon dernier élément de la liste. J'ai envie d'ajouter une ligne fictive a ma liste .. c une solution un peu bourrin mais bon ... J'suis toujours à la recherche d'une solution efficace.
 
Merci

Reply

Marsh Posté le 05-12-2005 à 15:32:20    

C'est bon problème résolu j'ai refait mon code. :)
 
Par contre je suis entrain de faire un script .bat et je cherche à récupérer la variable windows contenant le nom de login d'un utilisateur pour la passer en paramétre à mon script.
 
Si qqun a ca en stock ? :)
 
Merci

Reply

Marsh Posté le 05-12-2005 à 16:03:09    

tu peux récupérer le login de l'utilisateur directement dans ton script:


Dim sLogin
Dim oWshNetwork
 
Set oWshNetwork = CreateObject("WScript.Network" )
sLogin = oWshNetwork.UserName
 



---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 13-01-2008 à 09:19:13    

Bonjour, pouriez vous me montrer un exemple pour créer un répertoire ?


Message édité par Coolnut le 13-01-2008 à 09:19:25
Reply

Marsh Posté le 14-01-2008 à 23:17:58    

Bah si tu lisais juste le code donné, tu devrais y trouver ton bonheur (genre la méthode createfolder)

Reply

Marsh Posté le 05-09-2008 à 12:02:32    

Bonjour Frittz,
 
Peux-tu afficher ton script résolu ?.
Ce serait sympa de faire profiter tout le monde.
 
Merci.
 
Cordialement.
 
 
 
 
 
 
 
 
 

Frittz a écrit :

Bonjour,
 
J'ai un problème que je n'arrive pas a résoudre donc je solicite votre aide.
 
Je dois créer un script qui créer des repertoires et aprés qui les transforme en repertoire virtuelle pour un serveur IIS.
Je pense que ce script marche pour la création de repertoire virtuel.
 
Cependant j'ai un problème car le script crée les repertoires (enfin en partie..).
Les repertoires viennent d'une liste.txt, entrer les un à la suite des autres.
 
Problèmes :
 
- Il ne crée jamais le dernier repertoire de la liste ( problème dans la boucle ?)
- Dans les repertoires créer il recrée les repertoires de la liste.
 
ex :
 
liste.txt :
rep1
rep2
rep3
 
Il crée les repertoires 1 et 2 mais pas le 3eme.
Dans les rep 1 et 2 il recreera les repertoires 1 et 2.
 
Voila le code !
 

Code :
  1. 'Declaration des variables
  2. Dim ligne
  3. Dim fsoopen, fsocreate, f, fexist, servobj, vdirobj
  4. 'msgbox "hop"
  5. 'Creation des objets fso pour l'ouverture, la creation de repertoire et le test d'existence de repertoire
  6. Set fsoopen = CreateObject("scripting.filesystemobject" )
  7. Set fsocreate = CreateObject("scripting.filesystemobject" )
  8. Set fexist = CreateObject("scripting.filesystemobject" )
  9. Set liste = fsoopen.opentextfile("C:\SCRIPT\listelogin.txt", 1)
  10.          ligne = liste.readline '1ere lecture : 1ere ligne
  11.  'msgbox ligne
  12.          Do While liste.atendofstream <> true
  13.   If fexist.Folderexists(ligne) <> true then
  14.    Set f = fsocreate.CreateFolder("C:\SCRIPT\" & ligne) 'creation du répertoire
  15.    Set servobj = GetObject("IIS://localhost/W3SVC/3/ROOT" ) 'le paramétre 3 nous renseigne qu'il s'agit de la 3eme zone (zone eleve), c'est ici que sont cree les repertoires virtuels
  16.    if (err<>0) then
  17.     msgbox "probleme d'ouverture du chemin du serveur web"
  18.    end if
  19.    Set vdirobj = servobj.create("IISWebVirtualDir", ligne)
  20.    vdirobj.Path = "c:\SCRIPT\" & login
  21.    vdirobj.AccessRead = True
  22.    vdirobj.AccessWrite = True
  23.    vdirobj.EnableDirBrowsing = False
  24.    vdirobj.AppFriendlyName = "test " & ligne
  25.    vdirobj.SetInfo
  26.    ligne = liste.readline
  27.   else
  28.    ligne = liste.readline
  29.   End if
  30.  Loop


 
 
Merci beaucoup pour votre aide car je desespere.
 
A+


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed