Je veux participer !
Programme développer en windev 16 ce matin. Permet de renommer de déplacer et renommer (pour éviter les erreurs) en masse des fichiers d’un répertoire avec une « date » dans leur nom. La liste des fichiers doivent avoir une structure du nom identique.
Le programme comprend une fenêtre :
- permet de sélectionner le répertoire ou sont les fichiers
- 3 zones ou on met le nom du fichier + extension pour permettre de séparer la date du texte pour pas de confusion dans le programme (cf légende dans la fenêtre)
- sélectionner le répertoire de sortie et 3 zones pour nommer le fichier de sortie
Le code du bouton ci-dessous. Faut voir avec la fenêtre pour comprendre un peu le code.
SI SAI_REP="" ALORS RepriseSaisie(SAI_REP)
SI SAI_date="" ALORS RepriseSaisie(SAI_date)
SI SAI_dateSor="" ALORS RepriseSaisie(SAI_dateSor)
SI SAI_REPSor="" ALORS RepriseSaisie(SAI_REPSor)
sListeFichier est une chaîne=fListeFichier(SAI_REP+"\*")
sUnFichier est une chaîne=ExtraitChaîne(sListeFichier,rangPremier,RC)
sFichierSortie est une chaîne
sDateSortie est une chaîne
sChaineDate est une chaîne
dhVarDateHeure est une DateHeure=DateSys()
ChainePosition est un entier
Sablier()
POUR TOUTE CHAINE sUnFichier DE sListeFichier SEPAREE PAR RC
SI ChaîneCommencePar(sUnFichier,SAI_REP+"\"+SAI_Deb) ET ChaîneFinitPar(sUnFichier,SAI_Fin) ALORS
sChaineDate=Droite(sUnFichier,Taille(sUnFichier)-Taille(SAI_REP+"\"+SAI_Deb))
sChaineDate=Gauche(sChaineDate,Taille(sChaineDate)-Taille(SAI_Fin))
SI Taille(sChaineDate)<>Taille(SAI_date) ALORS
//sa ressemble pas berk, on saute
CONTINUER
FIN
//Année
ChainePosition=PositionOccurrence(SAI_date,"YYYY",1)
SI ChainePosition<>0 ALORS //année sur 4 chiffres
dhVarDateHeure..Année=Milieu(sChaineDate,ChainePosition,4)
SINON
ChainePosition=PositionOccurrence(SAI_date,"YY",1)
SI ChainePosition<>0 ALORS //année sur 4 chiffres
dhVarDateHeure..Année="20"+Milieu(sChaineDate,ChainePosition,2)
FIN
FIN
//Mois
ChainePosition=PositionOccurrence(SAI_date,"MM",1)
SI ChainePosition<>0 ALORS
dhVarDateHeure..Mois=Milieu(sChaineDate,ChainePosition,2)
FIN
//Jour
ChainePosition=PositionOccurrence(SAI_date,"JJ",1)
SI ChainePosition<>0 ALORS
dhVarDateHeure..Jour=Milieu(sChaineDate,ChainePosition,2)
FIN
//Heure
ChainePosition=PositionOccurrence(SAI_date,"hh",1)
SI ChainePosition<>0 ALORS
dhVarDateHeure..Heure=Milieu(sChaineDate,ChainePosition,2)
FIN
//Min
ChainePosition=PositionOccurrence(SAI_date,"mm",1)
SI ChainePosition<>0 ALORS
dhVarDateHeure..Minute=Milieu(sChaineDate,ChainePosition,2)
FIN
//seconde
ChainePosition=PositionOccurrence(SAI_date,"ss",1)
SI ChainePosition<>0 ALORS
dhVarDateHeure..Seconde=Milieu(sChaineDate,ChainePosition,2)
FIN
//On formate le nom du fichier de sortie
sFichierSortie=SAI_DebSor
sDateSortie=SAI_dateSor
//Année cas spécial
ChainePosition=PositionOccurrence(sDateSortie,"YYYY",1)
SI ChainePosition<>0 ALORS //année sur 4 chiffres
sDateSortie=Remplace(sDateSortie,"YYYY",dhVarDateHeure..Année)
SINON
ChainePosition=PositionOccurrence(sDateSortie,"YY",1)
SI ChainePosition<>0 ALORS //année sur 4 chiffres
sDateSortie=Remplace(sDateSortie,"YY",NumériqueVersChaîne(Droite(dhVarDateHeure..Année,2), "02,0f"))
FIN
FIN
//Mois
sDateSortie=Remplace(sDateSortie,"MM",NumériqueVersChaîne(dhVarDateHeure..Mois, "02,0f"))
//Jour
sDateSortie=Remplace(sDateSortie,"JJ",NumériqueVersChaîne(dhVarDateHeure..Jour, "02,0f"))
//Heure
sDateSortie=Remplace(sDateSortie,"hh",NumériqueVersChaîne(dhVarDateHeure..Heure, "02,0f"))
//Min
sDateSortie=Remplace(sDateSortie,"mm",NumériqueVersChaîne(dhVarDateHeure..Minute, "02,0f"))
//seconde
sDateSortie=Remplace(sDateSortie,"ss",NumériqueVersChaîne(dhVarDateHeure..Seconde, "02,0f"))
sFichierSortie+=sDateSortie+SAI_FinSor
SI fCopieFichier(sUnFichier,SAI_REPSor+"\"+sFichierSortie) ALORS
SI INT_Suppr ALORS fSupprime(sUnFichier)
FIN
FIN
FIN
Téléchargement ici (v1.0)
Téléchargement ici (v1.1)
Edit: le lien de DL était pas bon
Rajout de la 1.1, j’ai remplacé les « Y » par « A » en bon français
et modif de l’interface
Edité le 03/05/2012 à 14:25