percubabs Posté(e) le 1 février 2013 Partager Posté(e) le 1 février 2013 bonjour j'ai une arborescence de type e:\sociétés\"nom1"\juridique\ --------------\"nom2"\juridique\ --------------etc j'aimerais parcourir les sociétés et si il y a le dossier juridique, créer dedans deux dossier A et B. j'arriver à créer les deux dossier, mais je n'arrive pas à parcourir toutes les sociétés pour voir si juridique y est. merci de votre aide. voila où j'en suis. f oFSO.FolderExists(stRep) ThenFor each oFld in oFSO.GetFolder(stRep).SubFolders'on vérifie que le répertoire existeIf oFld.Name = "Juridique" then Wscript.Echo oFld.Name Set oFld=oFSO.GetFolder (stRep & "\Juridique") 'Création de répertoire oFld.subFolders.Add("Social") oFld.subFolders.Add("Société")end ifNextEnd If merci de votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 2 février 2013 Auteur Partager Posté(e) le 2 février 2013 un petit coup de main? Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 5 février 2013 Auteur Partager Posté(e) le 5 février 2013 help? Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 5 février 2013 Partager Posté(e) le 5 février 2013 Salut percubabs, je ne connais pas du tout ce langage de script... As-tu essayé d'utiliser une autre variable pour ton "set" que celle de ton for each (oFld) ? C'est peut-être complètement stupide comme test (ça devrait l'être, stupide, vu que tu fais bien un next suite à ton if... le for each va alors ré-attribuer une autre valeur à "oFld" qui correspond à un nouveau dossier "société" de ton arborescence)... Mais vu que tu n'arrives pas à parcourir toutes les sociétés, j'imagine que tu sors du "for each". T'es-tu assuré sinon que ton for each sans son contenu tel que tu le présentes ici, retourne bien tous les sous-dossiers de "stRep" (en les affichant par exemple) ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 6 février 2013 Auteur Partager Posté(e) le 6 février 2013 c'est du vb script... je maîtrise pas trop. Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 6 février 2013 Partager Posté(e) le 6 février 2013 Salut, tu as pu tester ce que je t'ai proposé ? En fait, je tilte juste mais dans "stRep" tu as "e:\sociétés\"nom1"\" Il te faut une autre boucle qui se charge de lister les sous dossiers de "sociétés, non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 6 février 2013 Partager Posté(e) le 6 février 2013 Un truc comme ça, non ? //Test existence et parcours du dossier e:\société\if oFSO.FolderExists(stRep) Thenfor each fSociete in oFSO.GetFolder(stRep).SubFolders //On traite ici chaque dossier représentant une société" Wscript.Echo fSociete.Name for each unDossier in oFSO.GetFolder(stRep & "\" & fSociete.Name).SubFolders //On traite ici le contenu du dossier d'une société" //Est ce que le dossier juridique existe ?" If unDossier.Name = "Juridique" then Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique") //Création de répertoire fJuridique.subFolders.Add("Social") fJuridique.subFolders.Add("Société") end if next nextend if Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 7 février 2013 Auteur Partager Posté(e) le 7 février 2013 salut! non j'ai pas encore testé, je suis pas dans mon entreprise mais je te fait un retour des que j'y suis merci pour ton aide. On dirai bien que c'est cela. Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 18 février 2013 Auteur Partager Posté(e) le 18 février 2013 Bonjour !! bon je galère tjrs. Il doit y avoir un grosse boulette dans mon code! voila où j'en suis Dim stRepDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "E:\SOCIETE\"if oFSO.FolderExists(stRep) Then for each fSociete in oFSO.GetFolder(stRep).SubFolders Wscript.Echo fSociete.Name for each unDossier in oFSO.GetFolder(stRep & "\" & fSociete.Name).SubFolders If unDossier.Name = "Juridique" then Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique!") fJuridique.subFolders.Add("Social") fJuridique.subFolders.Add("Société") end if next nextend if il ne manque pas des déclarations? Petite chose aussi Si les dossier Social et Société existe déjà dans juridique il ne faut pas les créer. Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 18 février 2013 Partager Posté(e) le 18 février 2013 ok. Qu'est ce que te retourne ton script ? Tu affiches bien tous les dossiers sociétés dans "E:\SOCIETE\" ? Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique!") Ici, il y a "Juridique" avec un "!" est-ce normal ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 18 février 2013 Auteur Partager Posté(e) le 18 février 2013 on y est presque, sans le "!" il m'a fait les 5 première société. par contre il a planté quand il a vue que les dossiers existaient déjà dans une société. manque juste un "ne rien faire si existant". Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 18 février 2013 Partager Posté(e) le 18 février 2013 Il faut peut être mieux penser à un "faire ceci si n'existe pas" (If not). Je ne sais pas comment l'écrire en VB mais l'idée est là : //la syntaxe est probablement incorrecteIf not unDossier.Name = "Juridique" then Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 18 février 2013 Auteur Partager Posté(e) le 18 février 2013 nan, le problème c'est pour social et société. je vais regarder demain. Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 19 février 2013 Partager Posté(e) le 19 février 2013 Bin, c'est le même principe ! if NOT path.FolderExists("social") Then //creation du dossier socialend ifif NOT path.FolderExists("société") Then //creation du dossier sociétéend if Il faut toujours préférer cette solution à un "IF le dossier existe ALORS je ne fais rien SINON je le créer". Le "je ne fais rien", c'est un "if" vide, c'est juste horrible ! C'est beaucoup plus propre de faire un "IF le dossier n'existe pas ALORS je le créer" (c'est plus court, plus compréhensible). Tu es d'accord avec ça ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 19 février 2013 Auteur Partager Posté(e) le 19 février 2013 A la base j'aurais fait l’inverse mais ta solution est bonne ! je test cela de suite il essaie de créer même si le dossier existe déjà Dim pathDim stRepDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "E:\SOCIETE"if oFSO.FolderExists(stRep) Thenfor each fSociete in oFSO.GetFolder(stRep).SubFolders Wscript.Echo fSociete.Name for each unDossier in oFSO.GetFolder(stRep & "\" & fSociete.Name).SubFolders If unDossier.Name = "Juridique" then Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique") if not path.FolderExists("Social") Then fJuridique.subFolders.Add("Social") end if if not path.FolderExists("Société") Then fJuridique.subFolders.Add("Société") end if end if nextnextend if Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 19 février 2013 Partager Posté(e) le 19 février 2013 Comment ça tu aurais fais l'inverse ? Un "IF le dossier existe ALORS je ne fais rien SINON je le créer" ?! Crois-moi, ça c'est vraiment pas du joli code... Fais attention quand même... tu recopies beaucoup ce que je te dis mais tu n'y réfléchies pas trop . Tu as déclaré la variable "path" mais est-elle définie (a-t-elle une valeur) ? Je ne crois pas... Comme elle pointe vers "rien", le dossier Social ou Société n'y existe pas, alors ton script le créé. Logique. Tu es presque au bout, encore un peu de courage ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 19 février 2013 Auteur Partager Posté(e) le 19 février 2013 c'est vrai je recopie beaucoup mais je n'ai pas eu de formation VBScript et je n'ai que de de maigre base en C donc .... je viens à peine de commencer a voir les objets. j'ai bien comprit mon erreur et je te remercie beaucoup pour ton aide. Mais je ne vois pas quoi le caler en paramètre apparemment je n'ai pas le droit de faire ceci path = "stRep & "\" & fSociete.Name & "\Juridique" Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 19 février 2013 Partager Posté(e) le 19 février 2013 Oui, je dis ça moi.. t'inquiète pas, ça va venir. Je me souviens qu'au début, je galérais pas mal également :) J'ai jamais touché au VBScript non plus, je le découvre avec ce topic. On est bien d'accord que ce que tu peux faire pour régler ton dernier soucis, c'est la même chose que ce que tu fais au début : Set oFSO = CreateObject("Scripting.FileSystemObject")stRep = "E:\SOCIETE"if oFSO.FolderExists(stRep) Then.... Par contre ici, on va préférer un "IF NOT" (si ça n'existe pas, je le créé). Ce qui te coince là c'est la concaténation de chaîne de caractère (je crois qu'il y a un guillemet de trop, celui après le signe égale), mais l'idée est là. Tu vas t'orienter vers un truc comme ça : folder = stRep & "\" & fSociete.Name & "\Juridique\social"if not oFSO.FolderExists(folder) Then //creation du dossier social. Il faut faire attention a bien être au bon endroitend if//faire pareil avec le dossier Societe Je n'ai rien pour tester hein, j'écris tout ça sans savoir si ça fonctionne... Pense à me copier les erreurs que le script te retourne. Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 19 février 2013 Auteur Partager Posté(e) le 19 février 2013 objet requis e:\société\nom 1\Juridique ligne if not Dim pathDim stRepDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "E:\SOCIETE"if oFSO.FolderExists(stRep) Thenfor each fSociete in oFSO.GetFolder(stRep).SubFolders Wscript.Echo fSociete.Name for each unDossier in oFSO.GetFolder(stRep & "\" & fSociete.Name).SubFolders If unDossier.Name = "Juridique" then path = stRep & "\" & fSociete.Name & "\Juridique" Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique") if not path.FolderExists("Social") Then fJuridique.subFolders.Add("Social") end if if not path.FolderExists("Société") Then fJuridique.subFolders.Add("Société") end if end if nextnextend if Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 19 février 2013 Partager Posté(e) le 19 février 2013 Oui ! Logique ! Ici, "path", n'est pas un objet mais bien une chaîne de caractère : tu ne peux donc pas y appliquer la méthode "FolderExists" qui requière un objet du type "FileSystemObject". Regarde bien comme tu as fais au tout début de ton script, c'est exactement pareil ! Regarde également bien le code que j'ai écris dans mon précédent message, je t'ai donné la réponse en fait... Là, je te fais tout, c'est pas utile ! D'autant que tu sais faire, tu l'as déjà fait ! Garde en tête : - la fonction FolderExists prend en paramètre une chaîne de caractère (le chemin vers le dossier dont tu veux tester l'existence) - elle s'applique sur un object "FileSystemObject", pas une chaîne de caractère Lien vers le commentaire Partager sur d’autres sites More sharing options...
percubabs Posté(e) le 19 février 2013 Auteur Partager Posté(e) le 19 février 2013 ok c'est bon Dim pathDim stRepDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "E:\SOCIETE"if oFSO.FolderExists(stRep) Thenfor each fSociete in oFSO.GetFolder(stRep).SubFolders Wscript.Echo fSociete.Name for each unDossier in oFSO.GetFolder(stRep & "\" & fSociete.Name).SubFolders If unDossier.Name = "Juridique" then path = stRep & "\" & fSociete.Name & "\Juridique" Set fJuridique=oFSO.GetFolder (stRep & "\" & fSociete.Name & "\Juridique") if not oFSO.FolderExists(path & "\Social") Then fJuridique.subFolders.Add("Social") end if if not oFSO.FolderExists(path &"\Société") Then fJuridique.subFolders.Add("Société") end if end if nextnextend if Merci pour tes explications et ton temps Lien vers le commentaire Partager sur d’autres sites More sharing options...
malock Posté(e) le 19 février 2013 Partager Posté(e) le 19 février 2013 Cool ! Parfait ! De rien de rien, c'était un plaisir. Hésite pas si tu as besoin d'un peu d'aide. Bonne continuation ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.