[vbs] permet de copier un répertoire précis a l'interrieur d'une collection de répertoire

Contenu du snippet

j'ai fais ce script en prenant une base je ne sais plus ou d'ailleurs :-p
En fait, j'avais un dossier "-=Old=-" a déplacer, ce dossier se trouvait dans chacun des dossiers utilisateurs a partir d'une racine précise (plusieurs centaines de dossiers users), je n'avais le droit de toucher qu'a cet unique dossier...
Apres avoir écarter le script de 1000 ligne :-D, j'ai fais ce truc qui déplace le dossier "old" donc vers une destination, tout en conservant le noms du user qui correspond au noms du dossier dans mon cas (plus facile a recup si besoin).

donc voila, ca sert a ca :p
c'est peut etre pas super utile pour vous, mais pour moi qui n'avait le droit qu'au script ou à la mimine, ca m'aide bien :D

Source / Exemple :


Set ddr = CreateObject("Scripting.FileSystemObject")

' Ouverture du fichier qui contiendra la liste
Set objFSO = CreateObject("Scripting.FileSystemObject")
strRepNomFichierLst = ".\List_repertoires.txt"

objFSO.CreateTextFile strRepNomFichierLst, True

Set objFicLst = objFSO.GetFile(strRepNomFichierLst)
Set objWriteLst = objFicLst.OpenAsTextStream(8)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  
' récup des sous-rep de la racine
Set objRepInit = objFSO.GetFolder(".")

'Appel de la fonction qui va lister les répertoires, affichage d'un message de fin et Fin de l'appel
Call Start_SubFolder
MsgBox "Fin du déplacement",vbExclamation
Wscript.Quit

'Fonction qui va lister les répertoires de 1er niveau uniquement
'Faire une liste dans un fichier txt
'et déplacer les répertoires "-=Old=-"
Sub Start_SubFolder
On Error Resume Next

	For Each objSousRep in objRepInit.SubFolders
		objWriteLst.WriteLine(objSousRep.Name)
		Dossier = objRepInit & "\" & objSousRep.Name & "\-=Old=-\"
		MvFld = "chemin_destination\" & objSousRep.Name 'ne pas mettre de "\" apres objSousRep.Name, sinon, ca ne marche pas
		Set objSousRep = objRepInit.SubFolders
				
		'Déplacement du répertoire -=Old=- et de ce qu'il contient
		Set repwin =ddr.GetFolder(Dossier)
		ddr.MoveFolder repwin, MvFld
	Next
End Sub

Conclusion :


Il faut le lancer à la racine de la liste de répertoire user (dans mon cas), mais si vous désirez, vous pouvez changer au niveau du "Set objRepInit = objFSO.GetFolder(".")", en changeant le "." par le chemin, genre "./toto/".

Et perso, je le lance avec Cscript.exe :-p

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.