Déplacement fichiers et dossiers en vbs

Fermé
julien0709 - 18 juin 2008 à 16:15
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 19 juin 2008 à 12:25
bonjour à tous
je suis en train de tenter de finir un script en vbs pour déplacer des fichiers qui ont l'extension mdb, avec les dossiers qui les contienent, tou en gardant l'arborescence.

mon code donne à peu près cela pour le moment :

On Error Resume Next
liste = c:\liste.txt
strComputer = InputBox ("Adresse IP ")
strTarget = "Chemin UNC"
Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")

If OFS.FileExists ("liste") Then
MsgBox "la liste de base de données existe"
Else
WScript.quit
End If

Set objFile = objFSO.OpenTextFile ("liste", ForReading)

Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")

Do Until objFile.AtEndOfStream
strFolderName = objFile.ReadLine

Set objTextFile = objFSO.CreateTextFile ("C:\Scripts\Resultat_du_script.txt")

Getmdb (strfoldername)

Loop

Sub getmdb
Set colSubfolders = objWMIService.ExecQuery _
("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
& "Where AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")

Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" & strFolderName & "'} Where " _
& "ResultClass = CIM_DataFile")

For Each objFile in colFiles
If objFile.Extension = "mdb" Then
objTextFile.WriteLine objFile.FileName & " Ok"
objFSO.MoveFile objFile.Name, strTarget
End If
Next

End Sub

et j'ai un petit soucis pour finir ce code car je n'arrive pas à balayer les sous dossiers qui doivent contenir les dits fichiers
un petit coup de main please

4 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 juin 2008 à 16:17
Bonjour,

Regarde ici : https://vb.developpez.com/faq/vbs

Le chapitre 2.2

;o)
0
acyd Messages postés 11 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 19 juin 2008 3
18 juin 2008 à 16:21
Bonjour,
Vous devez utiliser la récursivité, c-à-d appeller la fonction getmdb à l'intérieur de la fonction getmdb pour toutes les instances d'objets qui sont des répertoires et non des fichiers, et ce jusqu'à ce qu'il y ait plus de répertoire et dans ce cas terminer la boucle.

@+
0
merci pour ce petit eclaircissement
plus précisément ça donne ???
0
par boucle récursive ça donnerait ?
car il faudrait garder l'arborescence telle qu'elle est et avoir un conditions d'arrêt, je ve dire quand il ne trouve plus de sous répertoire...
on peut pas faire appeler à une foncitio qui ressemblerait beuaocoup à get mdb ??

Merci
0
acyd Messages postés 11 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 19 juin 2008 3
18 juin 2008 à 16:41
Le lien donné par Polux31 est utile... il contient tout ce qu'il faut
0
shevshenko > acyd Messages postés 11 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 19 juin 2008
19 juin 2008 à 11:31
je vais surement paraitre un peut idiot mais... je ne comprends pas tro cette histoire de réxursivité
en fait, j'ai l'impression que cela ne s'arrête jamais

pour chaque sous dossier du dossier
on cherche les sous dossiers
pour chaque sous dossier des sous dossiers
on cherche les sous dossiers...
jusqu'à la fin de l'arborescence

quelqu'un peut il me montrer ce que cela donne en vbs...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 juin 2008 à 12:25
Salut

Tu as des exemples de code en VBS sur le lien que je t'ai passé.

;o)
0