Inclure les sous dossiers...

Gafab -  
 Gafab -
Bonjour a tous,
je développe rarement et je me retrouve devant un problème.
j'ai glané a droite, a gauche, ce script (ci-après) pour déplacer des archives de +de 7 jours sur une autre machine.
Il fonctionne bien sauf que je doit également l'appliquer pour un dossier ou il y a plein de sous dossiers.
je ne trouve pas comment inclure les sous dossiers et surtout les déplacer dans les mêmes sous dossiers de l'autre coté.

======================================

Option Explicit
Dim oFSO, oFolder, sDirectorySource, sDirectoryDest
Dim oFileCollection, oFile, sDir
Dim iDaysOld

sDirectorySource = "D:\Archives"
sDirectoryDest = "\\SERVER\Sauvegarde\Archives\"

iDaysOld = 7

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectorySource)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection

If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Move(sDirectoryDest)
End If

Next

Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
=======================================

Désolé, je suis très pauvre en connaissances vbs... si quelqu'un peu m'aider ce serait bienvenue.
merci par avance.
Gafab.

2 réponses

tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   435
 
Bonjour,
Voilà un script que j'ai fait y'a un moment, à parfaire et adapter (c'était mes débuts en vbs :) ); l'idée était de créer un backup d'un dossier ou de mettre à jour ce backup (de D: vers P:); ce script passe par un fonciton recursive qui parcourt les sous-dossiers, dans mes souvenirs ça marchait bien.....
Dsl de n'avoir pas le temps de fauire les modifs mais tu devrais trouver l'aide nécessaire sur ce forum ;)
racine= "D:\Perso"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set MonRep=FSO.GetFolder(racine)
copyrecur(MonRep)
msgbox "Backup folder updated"

function copyrecur(rep) 'parcourt les reps et sous reps et copie le fichier suivant conditions (datelastmodified différente) 
	Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
	Set colfic = rep.Files
	For Each fic In colfic
		pficdest = ("P:" & (right(fic.path,len(fic.path)-2) )) 'lettre de lecteur à adapter
		repdest = (left(pficdest, len(pficdest) - len(fic.name)))
		if not FSO.FolderExists(repdest) then
				FSO.CreateFolder(repdest)
		end if
				
		If FSO.FileExists(pficdest) then
			Set ficdest= fso.GetFile(pficdest)
			If not ficdest.datelastmodified = fic.datelastmodified then
				FSO.CopyFile  fic , repdest , OverwriteExisting
			end if
		else 
			FSO.CopyFile  fic , repdest , OverwriteExisting
		end if

	next
	for each subFolder in rep.SubFolders
		pfolddest =  ("P:" & (right(subFolder.path,len(subFolder.path)-2) ))
		
			if not FSO.FolderExists(pfolddest) then
				FSO.CreateFolder(pfolddest)
			end if
		copyrecur(subFolder)
	next
end function
0
Gafab
 
merci bien,
je vais jeter un oeil....
0
Steph
 
> c'était mes débuts en vbs

Donc éviter de poster des scripts de débutant et
recopier les scripts pros de MSDN
0