Aller au contenu

Personnaliser les couleurs !



Photo

[RÉSOLU] Petit script de création de dossier


  • Veuillez vous connecter pour répondre
21 réponses à ce sujet

#1 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 01 février 2013 - 16:22

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) Then
For each oFld in  oFSO.GetFolder(stRep).SubFolders
'on vérifie que le répertoire existe
If 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 if
Next
End If

merci de votre aide

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#2 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 02 février 2013 - 19:11

un petit coup de main?

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#3 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 05 février 2013 - 11:41

help?

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#4 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 05 février 2013 - 14:26

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) ?

#5 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 06 février 2013 - 11:12

c'est du vb script... je maîtrise pas trop.

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#6 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 06 février 2013 - 11:30

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 ?

#7 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 06 février 2013 - 13:09

Un truc comme ça, non ?

//Test existence et parcours du dossier e:\société\
if oFSO.FolderExists(stRep) Then
	for 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
	 next
end if

Modifié par malock, 06 février 2013 - 13:10.


#8 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 07 février 2013 - 18:24

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.

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#9 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 18 février 2013 - 14:13

Bonjour !!

bon je galère tjrs. Il doit y avoir un grosse boulette dans mon code!

voila où j'en suis


Dim stRep
Dim oFSO,oFld
Set 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
		 next
end 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.

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#10 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 18 février 2013 - 15:59

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 ?

#11 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 18 février 2013 - 16:13

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".

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#12 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 18 février 2013 - 16:38

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 incorrecte
If not unDossier.Name = "Juridique" then


#13 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 18 février 2013 - 21:03

nan, le problème c'est pour social et société. je vais regarder demain.

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#14 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 19 février 2013 - 04:05

Bin, c'est le même principe !

if NOT path.FolderExists("social") Then
    //creation du dossier social
end if
if 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 ?

#15 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 19 février 2013 - 08:56

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 path
Dim stRep
Dim oFSO,oFld
Set 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")
			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
		next
	next
end if

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#16 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 19 février 2013 - 09:53

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 :non: . 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 !

#17 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 19 février 2013 - 10:09

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"

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#18 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 19 février 2013 - 11:19

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 endroit
end 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.

#19 percubabs

percubabs

    Chevalier jedi

  • Stormtrooper
  • 2 103 messages

Posté 19 février 2013 - 12:08

objet requis e:\société\nom 1\Juridique

ligne if not
Dim path
Dim stRep
Dim oFSO,oFld
Set 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
   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
		next
	next
end if

sig-1202.png

Rejoignez la Team NEXT-INpact World community grid. Inscriptions. Forum

 

Star citizen : F7C A / Mustang Omega.

 

i7 4771 / q87 /32 go ddr3 1600 / R9 290x OC / OS: 840 pro 256 go / Storage : m500 480go


#20 malock

malock

    Ewok

  • INpactien
  • 32 messages
  • Lieu:La Rochelle

Posté 19 février 2013 - 13:09

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




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)