Script pour renommer des fhichier en masse

Résolu
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008 - 18 août 2008 à 09:59
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 18 août 2008 à 13:57
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 10:08
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 11:19
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
3
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 10:28
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
18 août 2008 à 10:54
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 10:59
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.
0
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 11:29
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..
0
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 11:35
c'est tout bon merci beaucoup !!
0
Neomorphe Messages postés 6 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 18 août 2008
18 août 2008 à 11:53
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
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
18 août 2008 à 13:57
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.
0
Rejoignez-nous