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