Bonjour à tous !
J'ai un petit soucis de création de VBS qui ne paraitra que broutille pour la plupart d'entre vous...
J'ai le besoin de déplacer des fichiers et dossiers automatiquement d'un dossier à un autre.
Précision, les noms des fichiers et dossiers déposé dans le répertoire source ne sont pas connus (il s'agit d'un FTP).
Bien entendu, si le fichier ou dossier existe déjà dans la destination, le besoin est de le renommer en incrémentant un numéro de type "_01", "_02", etc...
Je ne suis pas très doué en VBS mais je bidouille un peu et en glanant de ci de là des morceaux de scripts, j'ai réussi à obtenir à peu près ce que je voulais.
La seule chose qui me manque aujourd'hui est l'incrément pour les dossiers !
Cela fonctionne pour les fichiers mais je n'y parviens pas pour les dossiers...
Résultat, les dossiers déposé dans la source et qui existent déjà dans la destination sont déplacé mais écrasent les existants...
Je suppose que ce n'est pas sorcier mais je ne trouve pas le moyen de le faire marcher.
Pourrais-t-on m'aider svp ?
Par ailleurs, si vous trouvez moyen, de votre oeil d'expert, de simplifier ce script constitué surement inutilement de plusieurs sections (traitement fichiers, puis dossiers, etc...), je suis preneur.
Merci d'avance à qui voudra bien m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Const cnMax = 99 Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") Dim oSrcDir : Set oSrcDir = goFS.GetFolder("\\SERVEUR\Dossier\Source") Dim sDstDir : sDstDir = "\\SERVEUR\Dossier\Destination" Dim oFile, nInc, sNFSpec For Each oFile In oSrcDir.Files nInc = 0 sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) Do While goFS.FileExists(sNFSpec) And nInc <= cnMax sNFSpec = getNewFSpec(oFile.Name, sDstDir, nInc) Loop If nInc > cnMax Then Else oFile.Move sNFSpec End If Next Set FSO = CreateObject("scripting.FileSystemObject") For Each item In oSrcDir.SubFolders FSO.CopyFolder oSrcDir, sDstDir, True FSO.DeleteFolder "\\SERVEUR\Dossier\Source\*", True Next Function getNewFSpec(ByVal sFName, sDstDir, ByRef nInc) If 0 < nInc Then Dim sSfx sSfx = goFS.GetExtensionName(sFName) If "" <> sSfx Then sSfx = "." & sSfx sSfx = "_" & Right("00" & nInc, 2) & sSfx sFName = goFS.GetBaseName(sFName) & sSfx End If nInc = nInc + 1 getNewFSpec = goFS.BuildPath(sDstDir, sFName) End Function
Partager