[R] Renommer un fichier s'il est existant
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Renommer un fichier s'il est existant
Bonjour,
Après avoir commencé à écrire une demande d'aide hier, j'ai eu la lumière qui m'a fait trouver la solution au problème en me relisant ^^
Mais aujourd'hui, je suis confronté à un nouveau problème (il n'est pas compliqué je pense, mais le soucis c'est que je m'embrouille dans ma réflexion...)
Je suis en train de créer un script pour aller récupérer et copier des fichiers depuis différents chemins ( différents disques et liens réseau)
J'ai construis toute la partie, récupération des fichiers et check si le fichier existe bien (oui ça n'a rien d’impressionnant mais pour un débutant comme moi, je suis assez fier :p)
Je me retrouve donc avec une Array contenant les fichiers existants prêts à être copiés.
Ce que j'aimerais faire maintenant, c'est une fonction qui check si les fichiers sont existants dans le dossier de destination et qui les renomme si c'est le cas.
J'arrive à faire le test en reconstruisant le chemin de destination+nomdufichier (merci à StringRegExpReplace ^^) mais je bute sur la méthode à utiliser pour le renommage automatique si le fichier existe.
J'ai lu différents sujets proposant d'utiliser la fonction FileCopy(). J'ai essayé de l'adapter à mon cas, mais je me perds dans la marche à suivre...
Auriez vous une idée pour m'éclairer ?
Check si le fichier n'existe pas dans le dossier de destination.
Si oui, on le renomme.
Si non, on le copie.
Il faut aussi que je prenne en compte qu'il pourrait arriver que je demande de copier des fichiers ayant le même nom en même temps.
Merci par avance de votre aide
Après avoir commencé à écrire une demande d'aide hier, j'ai eu la lumière qui m'a fait trouver la solution au problème en me relisant ^^
Mais aujourd'hui, je suis confronté à un nouveau problème (il n'est pas compliqué je pense, mais le soucis c'est que je m'embrouille dans ma réflexion...)
Je suis en train de créer un script pour aller récupérer et copier des fichiers depuis différents chemins ( différents disques et liens réseau)
J'ai construis toute la partie, récupération des fichiers et check si le fichier existe bien (oui ça n'a rien d’impressionnant mais pour un débutant comme moi, je suis assez fier :p)
Je me retrouve donc avec une Array contenant les fichiers existants prêts à être copiés.
Ce que j'aimerais faire maintenant, c'est une fonction qui check si les fichiers sont existants dans le dossier de destination et qui les renomme si c'est le cas.
J'arrive à faire le test en reconstruisant le chemin de destination+nomdufichier (merci à StringRegExpReplace ^^) mais je bute sur la méthode à utiliser pour le renommage automatique si le fichier existe.
J'ai lu différents sujets proposant d'utiliser la fonction FileCopy(). J'ai essayé de l'adapter à mon cas, mais je me perds dans la marche à suivre...
Auriez vous une idée pour m'éclairer ?
Check si le fichier n'existe pas dans le dossier de destination.
Si oui, on le renomme.
Si non, on le copie.
Il faut aussi que je prenne en compte qu'il pourrait arriver que je demande de copier des fichiers ayant le même nom en même temps.
Merci par avance de votre aide
Modifié en dernier par 0xyg3n le mar. 19 mars 2013 15:12, modifié 1 fois.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..]Renommer un fichier s'il est existant
Pour vérifier si le fichier existe, c'est Pour le renommage voilà un exemple de petite fonction bien pratique (mais tu peux aussi utiliser FileMove)
Code : Tout sélectionner
If FileExists($dossier & "\" & $fichier) Then ...Code : Tout sélectionner
$avant = "aaa.txt"
$apres = "bbb.txt"
$dossier = @desktopdir & "\dossier" ; dossier contenant "aaa.txt" (chemin complet)
_Rename($avant, $apres, $dossier)
Func _Rename($oldname, $newname, $folder)
RunWait(@ComSpec & ' /C REN "' & $oldname & '" "' & $newname & '"', $folder, @SW_HIDE)
EndFunc" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Renommer un fichier s'il est existant
Bonjour Mikell,
Tout d'abord merci de t'être penché sur mon problème.
C'est vrai que je n'ai même pas penser passer par une commande dos pour renommer le fichier ^^
Merci pour l'exemple de l'utilisation de celle-ci. Maintenant il me reste à voir comment l'adapter à mon cas.
Je regarderais ce soir à tête reposée.
Je reviendrais vous dire le résultat
Tout d'abord merci de t'être penché sur mon problème.
C'est vrai que je n'ai même pas penser passer par une commande dos pour renommer le fichier ^^
Merci pour l'exemple de l'utilisation de celle-ci. Maintenant il me reste à voir comment l'adapter à mon cas.
Je regarderais ce soir à tête reposée.
Je reviendrais vous dire le résultat
-
lesolutionneur
- Niveau 7

- Messages : 368
- Enregistré le : ven. 09 déc. 2011 11:25
- Status : Hors ligne
Re: [..]Renommer un fichier s'il est existant
Quel est l'intérêt de passer par un commande DOS alors que Move fonctionne très bien ?mikell a écrit :Pour vérifier si le fichier existe, c'estPour le renommage voilà un exemple de petite fonction bien pratique (mais tu peux aussi utiliser FileMove)Code : Tout sélectionner
If FileExists($dossier & "\" & $fichier) Then ...Code : Tout sélectionner
$avant = "aaa.txt" $apres = "bbb.txt" $dossier = @desktopdir & "\dossier" ; dossier contenant "aaa.txt" (chemin complet) _Rename($avant, $apres, $dossier) Func _Rename($oldname, $newname, $folder) RunWait(@ComSpec & ' /C REN "' & $oldname & '" "' & $newname & '"', $folder, @SW_HIDE) EndFunc
Tiens, j'ai fait une petite fonction si t'aimes pas FileMove
Code : Tout sélectionner
Func _FileRename($file, $newname)
Local $szDrive, $szDir, $szFName, $szExt
_PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
Return FileMove($file, $szDrive & $szDir & $newname)
EndFunc
Exemple:
Code : Tout sélectionner
;Renommer c:\fichier.txt en Nabuchodonosor.jpg
$fichier = "c:\fichier.txt"
$nouveau_nom = "Nabuchodonosor.jpg"
$resultat = _FileRename("c:\fichier.txt", "Nabuchodonosor.jpg")
If $resultat Then
MsgBox(0, "Résultat", "Fichier renommé avec succès !")
Else
MsgBox(0, "Résultat", "Impossible de renommer le fichier, assurez vous qu'il existe et que vous avez la permission de le renommer !")
EndIf
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..]Renommer un fichier s'il est existant
Dans 99 % des cas, aucun (et je te rappelle que j'ai mentionné FileMove)lesolutionneur a écrit :Quel est l'intérêt de passer par un commande DOS alors que Move fonctionne très bien ?
Le 1 % restant c'est si par exemple tu avais envie de renommer "test.txt" en "TEST.txt"
@0xyg3n0xyg3n a écrit :.. je bute sur la méthode à utiliser pour le renommage automatique si le fichier existe.
Puisque StringRegExpReplace te parle, tu peux faire une boucle For sur la liste de fichiers et utiliser ce type de code
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Renommer un fichier s'il est existant
Bonsoir
je crois que vous oublié le principe de son scripte:
Il va chercher une liste de fichiers dans plusieurs endroits sur le réseaux et il veut ensuite copier cette liste dans un dossier sur son disque dur local.
Jusque la pas de problème mais il veut pas écraser les fichier existant, je pense qu'il suffit pas de renommer le fichier existant mais de lui donner un nouveau nom tant que le nouveau nom existe.
Dans la boucle While tu peux aussi choisir de renommer le fichier existant avant de faire la copie.
je crois que vous oublié le principe de son scripte:
Il va chercher une liste de fichiers dans plusieurs endroits sur le réseaux et il veut ensuite copier cette liste dans un dossier sur son disque dur local.
Jusque la pas de problème mais il veut pas écraser les fichier existant, je pense qu'il suffit pas de renommer le fichier existant mais de lui donner un nouveau nom tant que le nouveau nom existe.
Code : Tout sélectionner
#include <File.au3>
;;; ici ton code qui créer la liste des fichiers à copier
; Déclaration des variables
Local $DestDir, $Name, $Count, $szDrive, $szDir, $szFName, $szExt
; Parcours du tableau contenant la liste des fichiers
; For $i = 0 To Ubound($aListe) ; si tu as pas le nombre dans la cellule 0 du tableau
For $i = 1 To $aListe[0]
$Count = 0 ; on initialise le compteur
; on découpe la source en pour avoir le nom et l'extension du fichier source
_PathSplit($aListe[$i], $szDrive, $szDir, $szFName, $szExt)
; on initialise la variable qui contiendra le nom du fichier de destination
$Name = $szFName
; On va faire une boucle tant que le nouveau nom du fichier dans la destination existe
While FileExists($DestDir & "\" & $Name & "." & $szExt)
$Count += 1 ; on incrémente le compteur pour créer un nouveau nom, tu peut utiliser ce que tu veux pour renommer le fichier
$Name = $szFName & "_" & $Count
WEnd
; on copie ton fichier source vers la nouvelle destination avec le nom qui va bien
FileCopy($aListe[$i], $DestDir & "\" & $Name & "." & $szExt)
Next
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Renommer un fichier s'il est existant
Effectivement j'ai confondu
"fichiers existants" je pensais qu'il s'agissait de renommer ceux déjà présents dans la destination ^^
"fichiers existants" je pensais qu'il s'agissait de renommer ceux déjà présents dans la destination ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Renommer un fichier s'il est existant
Bonjour,
Merci GarydelaMer pour ce bout de code.
Après réflexion et lecture des réponses et du forum, j'étais parti dans l'idée d'incrémenter une variable si FileExists me renvoyait quelque chose.
Mais j'ai pas eu le flash de passer par une boucle while, qui en lisant ton bout de code me semble tout à fait logique ^^
C'est exactement ce que je voulais !
Merci.
J'édite mon premier message pour mettre [R] dans le titre.
Merci GarydelaMer pour ce bout de code.
Après réflexion et lecture des réponses et du forum, j'étais parti dans l'idée d'incrémenter une variable si FileExists me renvoyait quelque chose.
Mais j'ai pas eu le flash de passer par une boucle while, qui en lisant ton bout de code me semble tout à fait logique ^^
C'est exactement ce que je voulais !
Merci.
J'édite mon premier message pour mettre [R] dans le titre.

