Renommage de fichiers en série dans même rép
Patrick
-
jisisv Messages postés 3678 Statut Modérateur -
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.
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:
- Renommage de fichiers en série dans même rép
- Renommage de fichier - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Télécharger idm gratuitement sans numéro de série - Télécharger - Téléchargement & Transfert
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
2 réponses
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
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
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
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