Script pour renommer des fhichier en masse [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008
-
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
Bonjour,

 Débutant dans le domaine, j'ai un problème de nommage de fichier. Je m'explique :

 J'ai plusieurs fichiers .txt extrait automatiquement chaque jour dans un même dossier. Je souhaiterais que ceux-ci (ils ont des noms differents) voient ajouter à leur nom la date de la veille automatiquement grace à uun script.

exemple :

 aaaaa.txt
 bbbb.txt

deviennent
 
 aaaaa_date j-1.txt

 bbbb_date j-1.txt

Merci par avance.

 

9 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut.

Regardes et adaptes ceci à tes besoins

Private Sub Form_Load()
Call RenameFiles("C:\Partage\Ch\")
End Sub<hr />
Public Sub RenameFiles(FolderPath)
Dim FileName As String
Dim NewFileName As String
   FileName = Dir(FolderPath & "*.txt")
   While FileName <> vbNullString
       NewFileName = Mid(FileName, 1, InStrRev(FileName, ".") - 1) & Format(CStr(Date - 1), "_DD_MM_YYYY") & ".txt"
       Name FolderPath & FileName As FolderPath & NewFileName
       FileName = Dir()
   Wend
End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
ce que je t'ai donné est un ocde Visual Basic 6 (tout comme la section dans laquelle tu as poster)
[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_DIVERS_220.aspx Divers] / [infomsgt_DEBUTANTS_226.aspx Débutants] / Script pour renommer des fhichier en masse
En fait tu aurais du poster (mais pas grave, juste penses y pour les futures questions) ICI:

[infomsg.aspx Thèmes]

/ [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBSCRIPT_245.aspx VBScript]

Voici donc mon code "traduit" en VBScript

Dim Fils
Dim Foldr
Dim FSO
Dim FormatDate
   Set FSO = CreateObject("Scripting.FileSystemObject")
   
   Set Foldr = FSO.GetFolder("C:\Partage\Ch\")
   
   For Each Fils In Foldr.Files
       If FSO.GetExtensionName(Fils.Name) = "txt" Then
           FormatDate = "_" & Day(Date - 1) & "_" & Month(Date - 1) & "_" & Year(Date - 1)
           Fils.Name = Mid(Fils.Name, 1, InStrRev(Fils.Name, ".") - 1) & FormatDate & ".txt"
       End If
   Next
   
   Set Foldr = Nothing
   Set FSO = Nothing
   Set Fils = Nothing , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008

Merci pour ce script. Sauf erreur de ma part, je n'ai que le chemin a changer dans Form_load mais doué comme je suis cela ne marche pas.

 pour tester, j'ai creer un fichier test et dedans j'ai mis mon script plus des fichier text, j'ai changer le chemin, mais quand j'execute le script --->rien
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,

Cela ne marche pas ne nous avance pas... est ce que tu as une erreur????

Est ce que en fait tu souhaitais un Script VBS???

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008

oui je souhaite plus un script VBS

mais celui que tu m'a fournis c'est un script quoi ?

en tout cas merci encore de me repondre.
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008

Franchement merci. Juste une derniere question :

 si le numero du mois est inferieur à 10 j'aimerais ajouter un 0 afin de faire 08 par exemple...

promis apres j'arrete..
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008

c'est tout bon merci beaucoup !!
Messages postés
6
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
18 août 2008

Je post mon script vbs final pour ceux que ça intéresserais :

Dim Fils
Dim Foldr
Dim FSO
Dim FormatDate
Dim monthinf
Dim pas
   
   pas=1

   Set FSO = CreateObject("Scripting.FileSystemObject")
  
   Set Foldr = FSO.GetFolder("C:\dir\dossier")
  
   For Each Fils In Foldr.Files
       If FSO.GetExtensionName(Fils.Name) = "txt" Then
  
    if Month(Date - pas)<10  then
       
        monthinf="0" & Month(Date - pas)

               FormatDate = "_" & Day(Date - pas) & Monthinf & Year(Date - pas)
            Fils.Name = Mid(Fils.Name, 1, InStrRev(Fils.Name, ".") - 1) & FormatDate & ".txt"

    else
               FormatDate = "_" & Day(Date - pas) & Month(Date - pas) & Year(Date - pas)
            Fils.Name = Mid(Fils.Name, 1, InStrRev(Fils.Name, ".") - 1) & FormatDate & ".txt"
    end if
       End If
   Next
  
   Set Foldr = Nothing
   Set FSO = Nothing
   Set Fils = Nothing
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,
Avec ça, tu feras l' économie du test .<strike>if Month(Date - pas)<10  then</strike>
       
  monthinf=Format$(Month(Date - pas),"00")
   FormatDate = "_" & Day(Date - pas) & Monthinf & Year(Date - pas)
  Fils.Name = Mid(Fils.Name, 1, InStrRev(Fils.Name, ".") - 1) & FormatDate & ".txt"

 <strike>else

  ormatDate = "_" & Day(Date - pas) & Month(Date - pas) & Year(Date - pas)
  Fils.Name = Mid(Fils.Name, 1, InStrRev(Fils.Name, ".") - 1) & FormatDate & ".txt"
end if</strike>

<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.