[R] Rechercher plusieurs fois une valeur dans un fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
[R] Rechercher plusieurs fois une valeur dans un fichier
Bonsoir à tous,
voici mon probleme ,
j'utilise un logiciel qui log (jour,mois) le spooler d'impression (PaperCut Print Logger - http://www.papercut.com/), il crée un fichier txt ou csv du résultat.
dans ce fichier txt , il y a plusieurs info voici la liste:
Time,User,Pages,Copies,Printer,Document Name,Client,Paper Size,Language,Height,Width,Duplex,Grayscale,Size
Dans ce fichier il peut y avoir plusieurs fois le même user, comment faire pour avoir le résultat avec l'user sont total de Pages et Copies, je vois pas quel fonction utiliser.
Merci de votre aide.
voici mon probleme ,
j'utilise un logiciel qui log (jour,mois) le spooler d'impression (PaperCut Print Logger - http://www.papercut.com/), il crée un fichier txt ou csv du résultat.
dans ce fichier txt , il y a plusieurs info voici la liste:
Time,User,Pages,Copies,Printer,Document Name,Client,Paper Size,Language,Height,Width,Duplex,Grayscale,Size
Dans ce fichier il peut y avoir plusieurs fois le même user, comment faire pour avoir le résultat avec l'user sont total de Pages et Copies, je vois pas quel fonction utiliser.
Merci de votre aide.
Modifié en dernier par ludoo le dim. 19 juin 2011 20:33, modifié 1 fois.
Ludo
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..]Rechercher plusieurs fois même valeur ds un fichier
Stringregexp, Si tu as de la difficulté avec le pattern tu peux toujours poster un exemple de document à analyser ici , en message privé où en email 
Compte skype : bloodwolfff
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
bonjour,
voici le fichier du résultat fait par le logiciel.
les USER représentent des noms de personnes, par mesure de confidentialité j'ai changé les nom par USERX.
il faudrait lire le fichier ligne par ligne ,
pour chaque info [Time,User,Pages,Copies,Printer,Document Name,Client,Paper Size,Language,Height,Width,Duplex,Grayscale,Size,] trouvée les mettre ds une variable (un tableau ?),
puis lire le tableau , ça peut être une piste de script ?
voici le fichier du résultat fait par le logiciel.
les USER représentent des noms de personnes, par mesure de confidentialité j'ai changé les nom par USERX.
il faudrait lire le fichier ligne par ligne ,
pour chaque info [Time,User,Pages,Copies,Printer,Document Name,Client,Paper Size,Language,Height,Width,Duplex,Grayscale,Size,] trouvée les mettre ds une variable (un tableau ?),
puis lire le tableau , ça peut être une piste de script ?
Modifié en dernier par ludoo le mer. 17 août 2011 12:43, modifié 1 fois.
Ludo
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
Dans ton log les infos sont séparées par des virgules, donc les funcs FileReadLine() puis StringSplit($line, ",") me paraissent adaptées, sommairement ça donnerait :
Code : Tout sélectionner
$file = FileOpen("log_spooler.txt", 0)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$var = StringSplit($line, ",")
If StringInStr($line, $var[2]) Then .... ; <== $var[2] c'est l'user
Wend
FileClose($file)
Modifié en dernier par mikell le dim. 19 juin 2011 16:03, modifié 2 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
Un p'tite base SQLite ?
Allez, dis-moi si ça te va.
L'avantage est que tu peux faire des stats bien plus pointues, par type d'emploi, par tous les critères imaginables.
Allez, dis-moi si ça te va.
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
jchd, je vais garder ce modèle de script (même si je ne suis pas sûr de l'utiliser souvent)
Décidément, un p'tit tuto SQLite, ça serait bien...
Décidément, un p'tit tuto SQLite, ça serait bien...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
Oui, ça serait bien. Finaliser la compta de la boîte (très en retard) serait bien aussi !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
La vie est un chemin semé d'embûches et de choix cornéliens 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
merci à vous pour les info et le script
un tuto sur SQLlite serait bienvenue
je voudrais afficher , l'user et le nombre de copie en A4 et A3 , je sais pas comment faire.
un tuto sur SQLlite serait bienvenue
je voudrais afficher , l'user et le nombre de copie en A4 et A3 , je sais pas comment faire.
Ludo
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
Essaye ce pavé :
Tu trouveras un affichage de tableaux en HTML en faisant une recherche sur ce forum. Il y a des possibilités pour faire à peu près tout ce dont tu as besoin.
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
encore merci
je vais faire tour sur le forum pour le HTML , je vais utiliser ce script pour renseigner un fichier excel.
je vais faire tour sur le forum pour le HTML , je vais utiliser ce script pour renseigner un fichier excel.
Ludo
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Rechercher plusieurs fois une valeur dans un fichie
Argh ! Enfin, c'est ton choix.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
c plus simple et j'aurais aussi des graphiques.
Ludo
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
Dans ce cas, exporte le tableau résultant de la lecture du .csv dans Excel avec l'UDF qui va bien.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
Bonjour,
dans cette requête je vois pas comment remplacer le nom de l'imprimante (LEXMARK-E352DN-RDC-01) par une variable
merci de votre aide.
dans cette requête je vois pas comment remplacer le nom de l'imprimante (LEXMARK-E352DN-RDC-01) par une variable
Code : Tout sélectionner
$res = _SQLite_GetTable2d($hDb, "select user as [Utilisateur], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A3') as [Pages A3 imprimées], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A4') as [Pages A4 imprimées] from log L where printer = 'LEXMARK-E352DN-RDC-01' group by user ;", $rows, $nrows, $ncols)Ludo
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
Voyons ça :
La fonction X($str) figure dans un post antérieur dans ce fil et sert à gérer les quotes éventuellement présentes dans la chaîne à transmettre à SQLite, pour éviter tout souci.
Code : Tout sélectionner
local $ThePrinter = 'LEXMARK-E352DN-RDC-01'
$res = _SQLite_GetTable2d($hDb, "select user as [Utilisateur], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A3') as [Pages A3 imprimées], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A4') as [Pages A4 imprimées] from log L where printer = "&X($ThePrinter)&" group by user ;", $rows, $nrows, $ncols)La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
probleme de boucle
voici les bouts de code : la fonction ReqBD_BE_1() requete SQL , la fonction ResBE extraction des données de la requete ReqBD_BE_1()
code ResBE:
lors de l'exécution de la première fonction "ReqBD_BE_1()" et "ResBE()" pas de probleme , par contre quand il passe à la 2eme fonction "ReqBD_BE_2()" , message d'erreur :
Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$user = $rows[$i][0]
$user = ^ ERROR
d'ou peut venir le probleme , j'ai changé l'ordre d'exécution des fonctions , cela reproduit le même probleme pour la 2eme fonction qui suit .
voici les bouts de code :
Code : Tout sélectionner
Func BE()
;~ Local $rows, $nrows, $ncols, $aUser, $MatchGroup
; Open Connection to the Active Directory
_AD_Open()
ReqBD_BE_1()
ResBE()
ReqBD_BE_2()
ResBE()
; Close Connection to the Active Directory
_AD_Close()
_SQLite_Close($hDb)
_SQLite_Shutdown()
EndFunc ;==>BEcode ResBE:
Code : Tout sélectionner
Func ResBE()
;~ Local $rows, $nrows, $ncols, $aUser, $MatchGroup
for $i = 0 to $rows
;~ for $i = 0 to $rows step 1
$i = $i +1
;~ MsgBox(0,"user","user "&$rows[$i][0] & " nbs pages "&$rows[$i][2])
$user = $rows[$i][0]
;~ $user = $rows[$i][$i]
$pageA4 = $rows[$i][2]
$pageA3 = $rows[$i][1]
;~ MsgBox(0,"user","user "&$user)
;~ MsgBox(0,"user","nbs pages "&$page)
;~ $aUser = _AD_RecursiveGetMemberOf($user, 10, 1)
$aUser = _AD_GetUserGroups($user)
If @error > 0 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $user & "' has not been assigned to any group")
Else
; For groups that are inherited, the return is the FQDN of the group or user, and the FQDN(s) of the group(s) it
; was inherited from, seperated by '|'
;~ _ArrayDisplay($aUser, "Active Directory Functions - Example 1 - Group names user '" & $user & "' is a member of")
for $j = 1 to $aUser[0]
;~ MsgBox(0,"group user","user member of group "&$aUser[$j])
$filegroup = FileOpen("groupBE.txt",1)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
FileWriteLine($filegroup, $aUser[$j] & @CRLF)
FileClose($filegroup)
Next
EndIf
$filegroup = FileOpen("groupBE.txt",0)
while 1
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$rFile = FileReadLine($filegroup)
If @error = -1 Then ExitLoop
$cn = StringSplit($rFile, ",")
;~ MsgBox(0, "group", $rFile)
;~ MsgBox(0, "group cn=", $cn[1])
if $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Or $cn[1] = "CN=xxxx" Then
$filecount = FileOpen("countBE.txt",1)
FileWriteLine($filecount, $pageA4)
FileWriteLine($filecount, $pageA3)
FileClose($filecount)
ExitLoop
EndIf
;~ FileClose($filegroup)
WEnd
FileClose($filegroup)
Next
EndFunc ;==> ResBEArray variable has incorrect number of subscripts or subscript dimension range exceeded.:
$user = $rows[$i][0]
$user = ^ ERROR
d'ou peut venir le probleme , j'ai changé l'ordre d'exécution des fonctions , cela reproduit le même probleme pour la 2eme fonction qui suit .
Ludo
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
N'ayant pas le code de tes fonctions de requête, j'ai du mal à localiser le problème avec précision.
Par contre, je vois que tu passes à ta fonction d'exploitation des résultats un paramètre $nrows qui, selon toute bonne logique intuitive, serait le nombre de rangées du résultat. Tu te lances illico dans une boucle For $i = 0 to $rows, qui comprend $nrows + 1 éléments ... d'où un sérieux doute sur la borne $nrows employée. Change cette ligne par For $i = 0 to $rows - 1 et dis-nous si ça explose encore.
Par contre, je vois que tu passes à ta fonction d'exploitation des résultats un paramètre $nrows qui, selon toute bonne logique intuitive, serait le nombre de rangées du résultat. Tu te lances illico dans une boucle For $i = 0 to $rows, qui comprend $nrows + 1 éléments ... d'où un sérieux doute sur la borne $nrows employée. Change cette ligne par For $i = 0 to $rows - 1 et dis-nous si ça explose encore.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
voici le code de la requete :
même erreur avec
Code : Tout sélectionner
Func ReqBD_BE_1()
$res = _SQLite_GetTable2d($hDb, "select user as [Utilisateur], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A3') as [Pages A3 imprimées], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A4') as [Pages A4 imprimées] from log L where printer = "& X($impBE1)&" group by user ;", $rows, $nrows, $ncols)
EndFuncCode : Tout sélectionner
For $i = 0 to $rows - 1Ludo
