Renommage de fichiers en série dans même rép

Patrick -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour à tous.

Je ne suis pas un analyste-développeur mais j'ai un grand besoin dans le cadre de mon stage dans les réseaux.

Voila mon besoin, faire 2 programmes sous WINDOWS :

Prog 1 : Renommer des fichiers avec comme noms "067xxxxx.000" (où xxxxx sont des numéros quelconques) en noms "06710767000xxxxx.TXT" (les xxxxx ne changent pas, 10767000 sont des champs obligatoires à ajouter, l'extension 000 change en TXT)

Prog 2 : Renommer des fichiers avec comme noms "06710767000xxxxx_CR.TXT" (xxxxx sont des numéros quelconques) en noms "AAMMJJxx" (date du jour inversé suivi de seulement les deux derniers "x").

Bref, il n'y a que pratiquement que des chiffres dans les noms de fichiers.

C'est un programme-batch, une espèce d'automatisation dès qu'on lance le programme manuellement quoi.

C'est pour renommer des fichiers en blocs (une dizaine par jour) dans un même répertoire. Cela évite de devoir renommer tous ces fichiers un par un avec le clic droit et le clavier.... En plus, ces fichiers seront mieux archivés grâce à la date du jour dans le nom "AAMMJJxx".

On peut utiliser n'importe quel langage compatible avec Windows et sa structure de fichiers. Si quelqu'un pouvait m'aider ce serait vraiment hyper génial !! (Pour le stage et pour moi aussi car ça m'intéresse aussi pour la maison dans mes répertoires).

C'est possible sous Windows tout ça ?? Et comment faire ? Help !!.... Au secours à tous.

Je remercie d'avance les personnes qui auraient l'amabilité et la bonté de m'aider. Je leur serais très très reconnaissant !! M'aider m'aider......

Merci de me répondre à :
plam@webmails.com
plam@caramail.com

Patrick.
A voir également:

2 réponses

phil63
 
salut
je t'ais bricolé ça... à rajouter dans un module vb sous excel et en rajoutant
2 boutons associés à main1() et à main2().
sauvegarde ensuite le .xls dans le rep à traiter (fait d'abord un rep de test !)
nécessite surement des ajustements, le code me semble lisible.

Function renommer1(sourcefic$) As String

Dim fichier$, sufix$, milieu$, prefix$, fin$

fin$ = ".000"
sufix$ = ".txt"
milieu$ = "10767000"
prefix$ = "067"
If (Left(sourcefic$, 3) = prefix$) And (Right(sourcefic$, 4) = fin$) Then
fichier$ = prefix$ + milieu$ + Mid(sourcefic$, 4, 5) + sufix$
End If
renommer1 = fichier$

End Function

Function renommer2(sourcefic$) As String

Dim fichier$, sufix$, prefix$

datedujour$ = Str(Date)
datedujour$ = Right(datedujour$, 2) + Mid(datedujour$, 4, 2) + Left(datedujour$, 2)
Debug.Print datedujour$
sufix$ = "_CR.txt"
prefix$ = "06710767000"
If (Left(sourcefic$, 11) = prefix$) And (Right(sourcefic$, 7) = sufix$) Then
fichier$ = datedujour$ + Mid(sourcefic$, 15, 2) + sufix$
End If
renommer2 = fichier$

End Function

Sub main1()

Dim x$

x$ = Dir("*.000")
While x$ <> ""
' Debug.Print x$
Name x$ As renommer1(x$)
x$ = Dir$
Wend
End Sub

Sub main2()

Dim x$

x$ = Dir("*_CR.txt")
While x$ <> ""
Debug.Print x$
Name x$ As renommer2(x$)
x$ = Dir$
Wend

End Sub

Private Sub CommandButton1_Click()
Call main1
End Sub

Private Sub CommandButton2_Click()
Call main2
End Sub
0
jisisv Messages postés 3678 Statut Modérateur 935
 
Une bonne solution serait d'installer Python, le langage script orienté objet multi-plateformes.
Voir par exemple
http://www.python.org/2.2/

Attention les tabulations merdent probablement ? cause du textarea....

#!/usr/bin/python
import sys
import os
import re
import time

def proc1(rep) :

#Renommer des fichiers avec comme noms "067xxxxx.000" (o? xxxxx sont des numéros quelconques) en noms "06710767000xxxxx.TXT" (le
s xxxxx ne changent pas, 10767000 sont des champs obligatoires ? ajouter, l'extension 000 change en TXT)

files = os.listdir(rep)
reg1 = re.compile("^067(.....)\.000")

for file in files :
if ( reg1.match(file)) :
file2 = reg1.sub( "06710767000\\1.TXT", file)
try:
os.rename(file, file2)
except():
print "Could not rename %s to %s" %(file,file2)
print "%s --> %s" % (file, file2)

def proc2(rep) :
#Renommer des fichiers avec comme noms "06710767000xxxxx_CR.TXT" (xxxxx sont des numéros quelconques) en noms "AAMMJJxx" (date du
jour inversé suivi de seulement les deux derniers "x").
files = os.listdir(rep)

reg1 = re.compile("^06710767000...(..)_CR.TXT")

for file in files :
if ( reg1.match(file)) :
tmp = time.time()
file2 = reg1.sub("\\1", file)
timeparts = time.localtime(time.time())
file2 = file2 + time.strftime("%y%m%d", timeparts )
try:
os.rename(file, file2)
except():
print "Could not rename %s to %s" %(file,file2)
print "%s --> %s" % (file, file2)

##############################################
if __name__ == '__main__':
if (len(sys.argv) > 1) :
proc1(sys.argv[1])
proc2(sys.argv[1])

Allways close to Open Source...
Johan Daine
0