Page 1 sur 1
Boucle pour comparer des fichiers
Posté : sam. 01 juil. 2017 15:24
par Orcalyzer
Bonjour à tous,
Je souhaite réaliser une boucle qui permet de parcourir les fichiers d'un dossier afin de trier (supprimer) ceux qui sont orphelins.
Ex : fichier1.txt et fichier1.doc, on ne touche à rien. Si seul fichier2.txt existe (car fichier2.doc absent), alors on le supprime.
J'avais déjà réaliser ça en batch, qui donne ceci :
for %%a in (*.txt) do ( if not exist
"%%~na.doc" ( del
"%%a" echo Supression de
%%a ) echo Le fichier
%%a n
'est pas orphelin.
)
Après de multiple recherche, je ne trouve pas comment réaliser ceci sous autoit. Peut-être que la façon de faire est différente ? Une idée ?
J'ai vu qu'il y avait la fonction
FileExists mais je sèche.
Merci à vous.
Re: Boucle pour comparer des fichiers
Posté : sam. 01 juil. 2017 15:48
par orax
Bienvenue sur le forum.
Pour parcourir les fichiers d'un dossier, regarde la fonction FileFindFirstFile
.
Re: Boucle pour comparer des fichiers
Posté : sam. 01 juil. 2017 16:06
par Tlem
Comme j'avais quelques minutes, j'ai fait directement ce code. Ca fera gagner du temps à tous le monde.
Code : Tout sélectionner
#include <File.au3>
$Chemin = "c:\Test"
; On crée un tableau avec la liste des fichier *.txt + chemin complet présents dans le répertoire.
; Si besoin de recherche récursive, alors utiliser _FileListToArrayRec
; $aFiles = _FileListToArray ($Chemin, "*.txt", 1, 1, 1, 0, 2)
$aFiles = _FileListToArray($Chemin, "*.txt", 1, 1)
; On vérifie que la recherche à été fructueuse, sinon => Erreur !!!
If not IsArray($aFiles) Then
MsgBox(16, "Erreur", "Aucun fichier .txt trouvé !")
Exit
EndIf
; On déclare quelques variables qui seront utilisées dans la suite du code.
Local $aPathSplit, $sDrive = "", $sDir = "", $sFilename = "", $sExtension = "", $count = 0
;~ ; On lit le tableau du début à la fin (de la case 1 à la taille du tableau 1)
For $i = 1 to UBound($aFiles) - 1
; On décompose les élément de la "cellule" $aFiles[$i] en chemin + nom de fichier dans un autre tableau :
$aPathSplit = _PathSplit($aFiles[$i], $sDrive, $sDir, $sFilename, $sExtension)
; on utilise les éléments 1, 2, 3 du tableau pour vérifier si :
; Si le fichier \chemin\xxx.doc n'existe pas alors on supprime \chemin\xxx.txt
If Not FileExists($aPathSplit[1] & $aPathSplit[2] &$aPathSplit[3] & ".doc") Then
FileDelete($aFiles[$i])
$count += 1 ; On incrémente le compteur à chaque suppression.
EndIf
Next
MsgBox(64, "Terminé", "Opération terminée. " & $count & " fichier(s) supprimé(s)")
Re: Boucle pour comparer des fichiers
Posté : sam. 01 juil. 2017 18:37
par Orcalyzer
Super ! Merci à vous deux pour vos réponses et d'avoir pris le temps de faire un exemple.