Déplacement fichiers et dossiers en vbs

julien0709 -  
Polux31 Messages postés 7219 Statut Membre -
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
Configuration: Windows 2000
Internet Explorer 6.0

4 réponses

  1. acyd Messages postés 11 Statut Membre 3
     
    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
    1. julien0709
       
      merci pour ce petit eclaircissement
      plus précisément ça donne ???
      0
  2. julien0709
     
    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
    1. acyd Messages postés 11 Statut Membre 3
       
      Le lien donné par Polux31 est utile... il contient tout ce qu'il faut
      0
      1. shevshenko > acyd Messages postés 11 Statut Membre
         
        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
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Salut

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

    ;o)
    0