Déplacement dossier + Rename avec incrément s'il existe
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:
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 |