Déplacement fichiers et dossiers en vbs
julien0709
-
Polux31 Messages postés 7219 Statut Membre -
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
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
A voir également:
- Déplacement fichiers et dossiers en vbs
- Renommer des fichiers en masse - Guide
- Vbs windows - Accueil - Optimisation
- Fichiers epub - Guide
- Mes deplacement - Guide
- Wetransfer gratuit fichiers lourd - Guide
4 réponses
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.
@+
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.
@+
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
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
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...
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...