Page 1 sur 1

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

Posté : sam. 17 avr. 2010 12:54
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

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

Posté : sam. 17 avr. 2010 13:49
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

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

Posté : sam. 17 avr. 2010 14:25
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)
 

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

Posté : sam. 17 avr. 2010 14:52
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
 

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

Posté : sam. 17 avr. 2010 18:52
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

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

Posté : dim. 18 avr. 2010 09:45
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.

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

Posté : dim. 18 avr. 2010 11:28
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

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

Posté : dim. 18 avr. 2010 11:43
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

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

Posté : dim. 18 avr. 2010 12:18
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

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

Posté : dim. 18 avr. 2010 15:09
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"

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

Posté : dim. 18 avr. 2010 18:36
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

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

Posté : dim. 18 avr. 2010 22:07
par Tlem
Il serait peut être temps que vous jetiez un oeil à la documentation des commandes que vous cherchez à utiliser !!!