[R] Lecture du texte d'un dossier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
killshout
Niveau 2
Niveau 2
Messages : 21
Enregistré le : ven. 04 sept. 2009 18:54
Status : Hors ligne

[R] Lecture du texte d'un dossier

#1

Message par killshout »

Bonjour,

En faite j'ai des dossiers qui sont dénombrés :
Image

Ce que je veux faire c'est renommer tout ces dossiers en "Chapitre xxx". Pour cela il faut que je puisse récupérer le numéros de chaque dossier.
Par exemple je prend le dossier 243 je lis le nombre 243 je le stock et je m'en sert pour renommer le dossier en "chapitre 243" puis je prend le dossier 244 je lis le nombre 244 je le stock et je m'en sert pour renommer le dossier en "chapitre 244", etc ...

J'ai cherché un peu mais je n'ai pas trouvé la fonction pour. J'ai juste trouvé StringRegExpReplace pour changer le nom.

Merci de votre aide.
Modifié en dernier par killshout le sam. 19 sept. 2009 23:26, modifié 1 fois.
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [...] Lecture du texte d'un dossier

#2

Message par jumby »

Placez ce script dans le répertoire où se trouve les dossiers à renommer :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
$FileList = _FileListToArray(@scriptdir&"\", "*", 2)
If not @Error=4 Then
for $numberfolder = 1 to $FileList[0]
    $a = DirMove ( @scriptdir & "\" &$FileList[$numberfolder], @scriptdir & "\Chapitre " &$FileList[$numberfolder] , 0 )
Next
EndIf
_ArrayDisplay($FileList, "$FileList")
Attention :
Ce script ne vérifie aucunement le nom des dossiers avant de les renommer.
killshout
Niveau 2
Niveau 2
Messages : 21
Enregistré le : ven. 04 sept. 2009 18:54
Status : Hors ligne

Re: [...] Lecture du texte d'un dossier

#3

Message par killshout »

J'ai trouvé comment faire avec FileFindFirstFile et FileFindNextFile.
Mais je comprend pas je fais une boucle pour que la fonction FileFindNextFile m'affiche le nom du fichier que je recherche tant que se nom y est donc tant que @error est different de 1.
Ce qui donne le code suivant :

Code : Tout sélectionner

While (@error <> 1)
    MsgBox(0,"Nom du fichier",FileFindNextFile($FirstFile) &" et Erreur = " & @error)
Wend
 
Sauf que le MsgBox m'affiche "Erreur = 1" alors qu'on ne sort pas de la boucle ...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Lecture du texte d'un dossier

#4

Message par Tlem »

Il faut d'abord utiliser FileFindFirstFile().
Ensuite, le test d'erreur ne doit pas être fait dans le While de la boucle, mais juste après le FileFindNextFile() et seulement après vous pourrez afficher la MsgBox. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
killshout
Niveau 2
Niveau 2
Messages : 21
Enregistré le : ven. 04 sept. 2009 18:54
Status : Hors ligne

Re: [...] Lecture du texte d'un dossier

#5

Message par killshout »

Ca y est j'ai réussi.
Le temps de comprendre le fonctionnement de FileListToArray :)

Voici le code spécifique à mon dossier :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray("E:\")
If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf

For $i = 1 To $FileList[0]
    $Numero = StringRegExp($FileList[$i],'([0-9]{1,3})', 1)
    if @Error <> 1 Then
        if $Numero[0] >=100 Then
            DirMove("E:\" & $FileList[$i],"E:\Chapitre " & $Numero[0], 0)
        Else
            DirMove("E:\" & $FileList[$i],"E:\Tome " & $Numero[0], 0)
        EndIf
    Endif
    ;MsgBox(0,"","Numero = " & $Numero& " et i = " & $i)
Next
 
Je vais essayer de faire un programme plus maniable pour des utilisateurs.
Merci pour votre aide !
Répondre