[..] Joker : nom de la valeur sur rapport

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JohnWayne
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mer. 24 mars 2010 17:48
Status : Hors ligne

[..] Joker : nom de la valeur sur rapport

#1

Message par JohnWayne »

Bonjour,

J'ai essayé de trouver un juste titre pour ma question mais ce n'est pas vraiment facile.

Lors de l'exécution d'un programme celui-ci crée un rapport dans C:\ qui se nomme Ad-SCAN[1] :

-> Le SCAN peut varier, si il est exécute en mode suppression ce sera Ad-CLEAN

-> le numéro entre les crochets et variable si la personne l'exécute 10 fois ce sera Ad-SCAN[10]

Pour trouver ce rapport j'ai utilisé le joker *. Sur le rapport cela me met

Ad-* trouvé !

=> Ce que j'aimerais c'est qu'il m'indique le nom complet du fichier.

Ad-SCAN[2] présent ! ou Ad-CLEAN[1] présent ! etc...

Merci de votre aide,

JW
alex1205
Niveau 5
Niveau 5
Messages : 123
Enregistré le : dim. 07 mars 2010 13:59
Status : Hors ligne

Re: [...]Joker : nom de la valeur sur rapport

#2

Message par alex1205 »

Essaie ça:

Code : Tout sélectionner

Local $i
For $i = 0 to 10000 step +1
    If FileExists ( "C:/AD-Scan"&"["&$i&"]"&".txt") Then
        Msgbox (0, "", "Ad-Scan trouvé")
    ElseIf  FileExists( "C:/AD-Clear"&"["&$i&"]"&".txt")Then
            Msgbox (0, "", "Ad-Clear trouvé")
        EndIf
        Next
Le "je ne sais pas" et "j'y arrive pas" n'existe dans mon vocabulaire. Toutes Questions ont une réponse, cherchez et vous la trouverai. Utilisez Recherche du forum et vous verrez. Si [blink]Aucune[/blink] question ne tient à votre problème, créez un sujet.
GMib
Niveau 4
Niveau 4
Messages : 57
Enregistré le : sam. 23 janv. 2010 12:39
Status : Hors ligne

Re: [...]Joker : nom de la valeur sur rapport

#3

Message par GMib »

Essaye plutot ca :

Code : Tout sélectionner

; Shows the filenames  in the current directory.
$search = FileFindFirstFile("Ad-*[*].txt")

; Check if the search was successful
If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
EndIf

While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop

    MsgBox(4096, "File:", $file)
WEnd

; Close the search handle
FileClose($search)
 
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...]Joker : nom de la valeur sur rapport

#4

Message par Voodoo »

Ou ça :D

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
Local $chemin_rapports = "."

$arr_files = _FileListToArray($chemin_rapports , "Ad-*[*].txt", 1)
_ArrayDisplay($arr_files)
 
Si tu veux quelque chose de plus personnalisé, tu peux appliquer une fonction qui va filtrer un tableau:

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
Local $chemin_rapports = "."

$arr_files = _FileListToArray($chemin_rapports , "*", 1) 
_ArrayDisplay($arr_files)


$arr_files_filter = _ArrayFilterRegEx($arr_files,"(?i)Ad\-\w+\[\d+\]")
_ArrayDisplay($arr_files_filter)


Func _ArrayFilterRegEx(Const ByRef $aArray,$sFilter)
    Local $iSize = UBound($aArray)
    Local $aBuffer[$iSize]
    Local $i,$k=0

    For $i=0 to $iSize - 1
        if(StringRegExp($aArray[$i],$sFilter)) Then
            $aBuffer[$k] = $aArray[$i]
            $k+=1
        EndIf
    Next

    if (not $k = 0) then ReDim $aBuffer[$k]

    return $aBuffer
EndFunc
 
JohnWayne
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mer. 24 mars 2010 17:48
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#5

Message par JohnWayne »

Dac'

La méthode Gmid donne exactement ce que je voulais :)

je l'ai modifié un peu pour ceci :

Code : Tout sélectionner

$search = FileFindFirstFile(@HomeDrive & "\Ad-*")

; Check if the search was successful
If $search = -1 Then
    Exit
EndIf

While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
FileWriteLine(@HomeDrive & "\report.txt", $file & " trouvé")
  WEnd
=> Je voulais savoir comment es ce que l'on pouvait faire pour que cela prenne en compte plusieurs données du genre ceci mais avec la technique de au dessus.

Code : Tout sélectionner

Global $aFile[15] = ["WFR", "SystemLook", "TmpSeaf", "TB", "Fyk", "Haxfix", "Haxlog", "UsbFix", "avenger", "resultat", "List'em", "cleannavi", "rapport", "ComboFix", "MyHosts" ]
For $i = 0 to UBound($aFile) - 1
    If FileExists(@HomeDrive & "\" & $aFile[$i] & ".txt") Then
        FileWriteLine(@HomeDrive & "\report.txt", $aFile[$i] & ".txt trouvé")
    EndIf
Next

J'éspère avoir été clair :lol:

JW
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#6

Message par Tlem »

Pour rester simple, je vous conseil l'utilisation de la fonction _FileListToArray().
Celle-ci vous permettra de saisir des caractères génériques et vous renverra en résultat un tableau de fichiers (tout comme le tableau $aFile).
Ensuite de la même manière, vous n'avez qu'a faire une boucle pour en lire le contenu.
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é".
JohnWayne
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mer. 24 mars 2010 17:48
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#7

Message par JohnWayne »

Merci Tlem

J'ai suivi vos conseils et j'arrive à deux scripts :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
Local $chemin_rapports = @HomeDrive

$arr_files = _FileListToArray($chemin_rapports , "Ad-*.txt", 1)
If FileExists(@HomeDrive & "\" & $arr_files & ".txt") Then
        FileWriteLine(@HomeDrive & "\report.txt", $arr_files & ".txt trouvé")
    EndIf
 

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>

$rep[2] = ["Report-*", "Ad-*"]
$FileList=_FileListToArray($rep)

For $i = 0 to UBound($rep) - 1
    If FileExists(@HomeDrive & "\" & $rep[$i] & ".txt") Then
        FileWriteLine(@HomeDrive & "\report.txt", $rep[$i] & ".txt trouvé")
    EndIf
Next
 
=> Il n'y a pas de message d'erreur de la part de AutoIT ce qui est déjà bien :lol: j'ai juste un problème c'est qu'il ne crée pas le rapport. Par ailleurs lequel des deux scripts et le plus "juste" ? ( Je pencherais pour le deuxième )

Merci,

JW
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#8

Message par Tlem »

Cela ne peut fonctionner comme vous l'avez fait, car

Code : Tout sélectionner

$rep[2] = ["Report-*", "Ad-*"]
crée un tableau de deux valeurs.
Or

Code : Tout sélectionner

$FileList=_FileListToArray($rep)
n'utilise aucune des deux valeurs ...
Une valeur du tableau s'obtient par $rep[x]. X étant l'index de la valeur à utiliser. :roll:

En fait, vous mélangez l'utilisation des 2 tableaux. :shock:

D'après votre code, vous allez devoir créer deux boucles imbriquées.
La première sur les éléments du tableau $rep et la seconde sur le tableau du résultat de recherche des fichiers (en rapport avec le premier tableau).
Ce qui donne :
Définition du tableau $rep
Boucle N°1 sur le tableau $rep
Recherche des fichiers en fonction de chaque élément de $rep.
Boucle N°2 sur le tableau $FileList
Test de la présence des fichiers de chaque éléments du tableau $FileList et écriture dans le fichier report.txt.
Fin de boucle N°2
Fin de boucle N°1
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é".
JohnWayne
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mer. 24 mars 2010 17:48
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#9

Message par JohnWayne »

Bonjour,

Merci de votre aide et de votre patience :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>

; Définition du tableau rep
$rep[2] = ["Report-*", "Ad-*"]

;recherche des fichiers en fonctions du tableau 
For $i = 0 to UBound($rep) - 1
    FileExists(@HomeDrive & "\" & $rep[$i] & ".txt") 

; Test de présence des fichiers de chaque éléments du tableau $FileList
$FileList=_FileListToArray($rep)
For $i = 0 to UBound($FileList) - 1
    If FileExists(@HomeDrive & "\" & $FileList[$i] & ".txt") Then
        FileWriteLine(@HomeDrive & "\report.txt", $FileList[$i] & ".txt trouvé")
    EndIf
Next
Inutile je pense de vous dire qu'il y a encore des erreurs là dedans :roll:

JW
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#10

Message par Voodoo »

Il me semble qu'il y a confusion entre répertoire et les fichiers. La variable est nommé $rep mais en faite ce sont les noms des rapports sous forme de fichiers textes.

Apparemment tous les rapports sont dans le même répertoire, il suffit de faire un _FileListToArray() pour récupérer les fichiers du répertoire suivit d'un _ArraySearch() avec la liste des fichiers à chercher: "WFR", "SystemLook", "TmpSeaf", "TB", "Fyk", "Haxfix", "Haxlog", "UsbFix", "avenger", "resultat", "List'em", "cleannavi", "rapport", "ComboFix", "MyHosts"
JohnWayne
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mer. 24 mars 2010 17:48
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#11

Message par JohnWayne »

Bonjour Voodoo

J'ai fais quelque chose comme cela :

Code : Tout sélectionner

_FileListToArray(@HomeDrive,"*",0)
_ArraySearch("WFR", "SystemLook", "TmpSeaf", "TB", "Fyk", "Haxfix", "Haxlog", "UsbFix", "avenger", "resultat", "List'em", "cleannavi", "rapport", "ComboFix", "MyHosts",0,0,0,1)
 
Suis-je sur la bonne voie ? Voici le message d'erreur :

Code : Tout sélectionner

C:\Documents and Settings\TEMP\Bureau\Logiciel Helper Formation\ST\ttes.au3(1,34) : ERROR: _FileListToArray(): undefined function.
_FileListToArray(@HomeDrive,"*",0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\TEMP\Bureau\Logiciel Helper Formation\ST\ttes.au3(2,176) : ERROR: _ArraySearch(): undefined function.
_ArraySearch("WFR", "SystemLook", "TmpSeaf", "TB", "Fyk", "Haxfix", "Haxlog", "UsbFix", "avenger", "resultat", "List'em", "cleannavi", "rapport", "ComboFix", "MyHosts",0,0,0,1)
 
JW
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Joker : nom de la valeur sur rapport

#12

Message par Tlem »

Il serait peut être temps que vous jetiez un oeil à la documentation des commandes que vous cherchez à utiliser !!!
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é".
Répondre