[FUNC] Renommer un Fichier

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 4
Niveau 4
Messages : 85
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

[FUNC] Renommer un Fichier

#1

Message par Numeric » ven. 12 mai 2017 03:02

AutoIt nous offre Plusieurs méthodes pour renommer un fichier. Mais pas de "FileRename" :mrgreen:
voici une fonction pour renommer proprement vos fichiers.
#include <WinAPIFiles.au3>

; #FUNCTION# ===========================================================================================================
; Name ..........: __WinAPIFileRename
; Description ...: Renomme un fichier
; Syntax ........: __WinAPIFileRename($iFilePath[, $aNewName = ""])
; Parameters ....: $iFilePath           - an integer value.
;                  $aNewName            - [optional] an array of unknowns. Default is "".
; Return values .: True Or False
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func __WinAPIFileRename($iFilePath, $aNewName = "")
        Local $iFullPath = _WinAPI_GetFullPathName($iFilePath)
        Local $dFullPath = _WinAPI_GetFullPathName($aNewName)

        Local $aFilesExtension = _WinAPI_PathFindExtension($iFullPath)
        Local $setDestExtension = _WinAPI_PathFindExtension($dFullPath)
        Local $SetName
        If $aFilesExtension <> $setDestExtension And $setDestExtension <> "" Then
                $SetName = StringTrimRight($dFullPath, StringLen($setDestExtension)) & $aFilesExtension
        Else
                $SetName = $dFullPath & $aFilesExtension
        EndIf

        If Not _WinAPI_CopyFileEx($iFilePath, $SetName) Then
                Return False
        Else
                FileDelete($iFilePath)
        EndIf
        Return True
EndFunc   ;==>__WinAPIFileRename


Local $sText = "Voici le contenu du fichier txt : nom initial = NumericFile"
Local Const $sPath = @ScriptDir & "\ NumericFile.txt"
If Not FileExists($sPath) Then
        FileWrite($sPath, $sText)
        MsgBox(48, "", "Fichier créé avec succès!")
EndIf
Sleep(50)

If __WinAPIFileRename($sPath, "AutoItFile") Then
        MsgBox(48, "", "Fichier Renommé avec succès!")
Else
        MsgBox(16, "", "Erreur!")
EndIf
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1710
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#2

Message par TommyDDR » ven. 12 mai 2017 10:03

Comment renommer un fichier en voulant explicitement supprimer son extension ?
Ou plus simplement : Comment renommer "file.txt" en "file.ini" ?
:P
De mon point de vue, si le développeur veut faire un rename("a.txt", "b") il ne faut pas vouloir lui mâcher le travail en ajoutant une extension ;)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1920
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#3

Message par jchd » ven. 12 mai 2017 13:51

Un simple FileMove() me semble plus efficace.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 172
Enregistré le : lun. 02 juin 2014 08:55
Localisation : Lyon
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#4

Message par TomAijerrie » sam. 13 mai 2017 20:49

Entièrement d'accord avec jchd, lorsque je teste avec de gros fichiers encodé en utf-8, la fonction proposée dans le premier message ne marche plus correctement.
Alors que FileMove() ne devrais pas poser de problème (j'utilise FileCopy, mais c'est presque pareil, c'est juste que dans un cas l'original est conservé)

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5611
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#5

Message par mikell » dim. 14 mai 2017 21:48

RunWait(@ComSpec & ' /C REN "' & $source & '" "' & $dest & '"', $workingdir, @SW_HIDE)

permet de renommer un fichier "test.txt" en "Test.txt" (ce que FileMove ne fait pas, du moins pas chez moi)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 1920
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#6

Message par jchd » lun. 15 mai 2017 13:34

Certes, car les systèmes de fichiers natifs de Windows sont insensibles à la casse. Mais, justement, l'intérêt d'une telle opération est uniquement d'ordre cosmétique.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1371
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: [FUNC] Renommer un Fichier

#7

Message par orax » lun. 15 mai 2017 15:00

Code : Tout sélectionner

#include <WinAPIFiles.au3>
_WinAPI_MoveFileEx("a.txt", "A.txt")
Dans cet exemple, le fichier a.txt est bien renommé en A.txt (testé sur Windows 10).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité