AutoIt

Toutes les astuces qui n'entre pas dans les autres catégories

AutoIt

Messagepar Cedric76534 » 30 Juin 2008 à 15:20

AutoIT : Wikipédia | Site officiel

J'utilise AutoIt depuis plusieurs années, il permet de scripter énormement de choses (tout ce qui est imaginable en fin de compte) et même de créer une interface graphique, le tout compilable en .exe

Le forum (anglais) est très réactif (pour les anglophobes il existe en francais ici mais est beaucoup moins interessant à mon sens). La communauté est présente et ne manquera pas de vous aider si possible. AutoIt est régulierement mis à jour afin de simplifier la vie aux scripteur.

Par exemple, pour faire des tests d'envoi de mail j'utilise Autoit: Envoi de mail via AutoIt

Par rapport à Domino, AutoIt m'a permit de créer des scripts pour recuperer certaines lignes des log de Domino. D'ailleurs, il serait tout à fait envisageable de créer une interface graphique afin d'étudier les logs de Domino (Ah si j'avais du temps...) :wink:

A la base AutoIt etait surtout prévu pour automatiser les saisies claviers, les clics de souris sur les boutons [suivant], bref rien ne vous empeche de créer un script pour l'installation de vos clients lourd lotus notes! Imaginez un seul .exe qui une fois lancé, execute le setup.exe contenu dans le même fichier exe et qui automatise vos saisies et clic de bouton? Ceci est évidement un exemple très basique en ce qui concerne les fonctionnalités de AutoIt...

:wink:
Avatar de l’utilisateur
Cedric76534
Posteur néophyte
Posteur néophyte
 
Message(s) : 71
Inscrit(e) le : 26 Jan 2007 à 09:56

Messagepar Dominux » 30 Juin 2008 à 16:20

Il n'y a pas photo, il s'agit d'un indispensable!
Cordialement,
Olivier (www.dominux.fr et sur Twitter)
Image
Avatar de l’utilisateur
Dominux
Administrateur
Administrateur
 
Message(s) : 1201
Inscrit(e) le : 16 Déc 2004 à 10:56
Localisation : Nantes

Messagepar Cedric76534 » 16 Juil 2008 à 10:33

1er exemple : Traitement d'un fichier exporté de Domino.

- But :
Récuperer les adresses mails d'un export au format .txt du names.nsf.

- Requis :
Installer AutoIt.

- Principe :
Exporter le names en txt, récuperer dans un autre fichier uniquement les lignes contenant le champs désiré (ici : InternetAddress), et remplacer le début de la ligne par du vide pour n'avoir que le contenu du champs recherché.

- Marche à suivre :
Dans Domino, selectionner 'Personnes' dans le menu hierarchique de gauche (Onglet Personnes et groupes), puis Menu Fichier, Exporter..., taper le nom du fichier desiré terminé par .txt (le bureau fait très bien l'affaire) puis clic sur le bouton [Exporter]. Laisser par défaut, clic sur le bouton [OK]. Vérifiez que le fichier texte est bien créé et qu'il contient les données voulues.
Clic droit de la souris sur le bureau de Windows, 'Nouveau', 'Autoit V3 Script'. Copier/coller ce code source :
Code : Tout sélectionner
#include <File.au3>

Global $search = "InternetAddress"
$message = "Selectioner le fichier txt exporté:"
Global $file = FileOpenDialog($message, @DesktopDir & "\", "Fichiers txt (*.txt)", 1 )
Global $target = StringReplace($file, ".txt", "") & "_out.txt"

$cnt1 = _FileExtractLine($file, $search, $target, 0, 0)
_RemplaceString($target)
MsgBox(0, "Fin", "Fin de traitement du fichier." & @CRLF & @CRLF & $cnt1 & " occurence traitée.")

Func _RemplaceString($d)
   $find = "InternetAddress:  "
   $replace = ""
   $retval = _ReplaceStringInFile($d,$find,$replace)
   If $retval = -1 then
      msgbox(0, "ERREUR", "Impossible de remplacer dans " & $d & @CRLF & " Erreur: " & @error)
      Exit
   Endif
EndFunc

;======================================================================================
; integer _FileExtractLine($file, $search, $target, [$opt], [$case])
; Extract all lines containing a certain substring in a file
;
;Parameters:
;   string   $file:       The file to edit, can be a relative or fix path
;   string   $search:    The char or string to search for
;   int      $opt:      0 (Default)=Match anywhere in the line, 1=Match only the beginning of the line, 2=Match only the end of the line
;   int      $case:      Search is: 0 (Default)=Case insensitive, 1=Case sensitive
;
;Remarks:   
;    Works a bit like the unix command 'grep'
;   The source file remains untouched
;   If an empty search string is given, no lines are matched.
;
;Return Value:
;   Success:
;   Returns an integer which indicates the number of extracted lines
;   
;   Failure:
;   Returns -1 and sets @ERROR to:
;   1 = Unable to open file
;   2 = Unable to open temp-file
;   3 = Unable to write target-file
;
;Author:   Marco Tanner
;======================================================================================

Func _FileExtractLine($file, $search, $target, $opt=0, $case=0)
   Local $read, $write, $line, $cnt = 0, $match
   
   $read = FileOpen($file, 0)
   If $read = -1 Then
      SetError(1)
      Return -1
   EndIf
   $write= FileOpen(@TempDir & "\~tmp", 2)
   If $write = -1 Then
      SetError(2)
      Return -1   
   EndIf
   
   While 1
      $line = FileReadLine($read)
      If @error Then ExitLoop
      
      $match = 0
      
      Select
         Case $opt = 0
            If $case = 0 Then
               If StringInStr($line, $search, 2) Then $match = 1
            Else
               If StringInStr($line, $search, 1) Then $match = 1
            EndIf
         Case $opt = 1
            If $case = 0 Then
               If StringCompare(StringLeft($line, StringLen($search)), $search, 2) = 0 Then $match = 1
            Else
               If StringCompare(StringLeft($line, StringLen($search)), $search, 1) = 0 Then $match = 1
            EndIf
         Case $opt = 2
            If $case = 0 Then
               If StringCompare(StringRight($line, StringLen($search)), $search, 2) = 0 Then $match = 1
            Else
               If StringCompare(StringRight($line, StringLen($search)), $search, 1) = 0 Then $match = 1
            EndIf
      EndSelect
      
      If $match = 1 Then
         FileWriteLine($write, $line)
         $cnt += 1
      EndIf      
   WEnd
   
   FileClose($read)
   FileClose($write)
   
   If Not FileMove(@TempDir & "\~tmp", $target, 1) Then
      SetError(3)
      Return -1
   EndIf
   
   Return $cnt
EndFunc

Sauvegarder le fichier, le lancer en double cliquant dessus.

Sélectionner le fichier .txt que vous avez créé précedement, attendez le message de fin qui affichera le nombre d'occurences trouvées.

Le fichier de sortie aura exactement le même nom que celui que vous avez créé terminé par '_out'.[/quote]
Avatar de l’utilisateur
Cedric76534
Posteur néophyte
Posteur néophyte
 
Message(s) : 71
Inscrit(e) le : 26 Jan 2007 à 09:56

Messagepar remi.marin » 16 Juil 2008 à 11:56

Dominux a écrit:Il n'y a pas photo, il s'agit d'un indispensable!

Mon cher Dominux,
Tu me décoit, je t'en est déjà parler dans notre ancienne vie.
remi.marin
Premier posts
Premier posts
 
Message(s) : 15
Inscrit(e) le : 15 Juil 2008 à 16:02
Localisation : Saint Ouen

Messagepar Dominux » 16 Juil 2008 à 13:17

A quel moment ai-je dis ne pas connaitre cet outil ???
Cordialement,
Olivier (www.dominux.fr et sur Twitter)
Image
Avatar de l’utilisateur
Dominux
Administrateur
Administrateur
 
Message(s) : 1201
Inscrit(e) le : 16 Déc 2004 à 10:56
Localisation : Nantes


Retour vers Divers