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
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
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

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
crée un tableau de deux valeurs.
Or
n'utilise aucune des deux valeurs ...
Une valeur du tableau s'obtient par
$rep[x]. X étant l'index de la valeur à utiliser.
En fait, vous mélangez l'utilisation des 2 tableaux.
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
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 !!!