Aide et conseils concernant AutoIt et ses outils.
shadsnob
Niveau 3
Messages : 42 Enregistré le : lun. 16 mai 2011 11:48
Status :
Hors ligne
#1
Message
par shadsnob » mer. 19 mars 2014 22:27
Bonjour j'essaye de créer un script qui permet de supprimer les doublons d'un fichier et l'autre fichier qui change de contenu pour refaire la recherche
A partir de plusieurs fichiers j'ai un fichier ou tout les données sont écrite mais il peux avoir des doublons des que je le remplie
Code : Tout sélectionner
$fichier = @ScriptDir&"\host.txt"
$fichier2 = @ScriptDir&"\hosts.txt"
Local $as_Body, $as_Bodya
_FileReadToArray($fichier, $as_Body)
_FileReadToArray($fichier2, $as_Bodya)
For $j = 1 to $as_Body
$line = FileReadLine($fichier,$j)
$drapeau = False
For $k = 1 to $as_Bodya
$line2 = FileReadLine($fichier2,$k)
If ($line <> $line2) Then
$drapeau = True
ExitLoop
EndIf
Next
Next
Modifié en dernier par
shadsnob le mer. 19 mars 2014 23:41, modifié 3 fois.
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#2
Message
par jguinch » mer. 19 mars 2014 22:46
euh, j'ai pas vraiment compris l'énoncé...
Tu veux supprimer les lignes qui sont en double dans un fichier ? Dans deux fichiers ? Entre les deux fichiers ?
Edit : j'ai modifié le titre de ton topic pour qu'il soit conforme aux règles de présentation d'un message. Merci d'y penser à l'avenir (j'ai été indulgent, je suis fatigué)
recherche doublons et suppression [..] =>
[..] Recherche doublons et suppression
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
shadsnob
Niveau 3
Messages : 42 Enregistré le : lun. 16 mai 2011 11:48
Status :
Hors ligne
#3
Message
par shadsnob » jeu. 20 mars 2014 16:39
Je télécharge des fichiers 6 au total je supprime tout les espaces, commentaire, ligne vide pour reformater correctement le host.
► Afficher le texte
Code : Tout sélectionner
#include <InetConstants.au3>
#include <Array.au3>
#include <File.au3>
dim $host[7]
$host[0] = "http://www.malwaredomainlist.com/hostslist/hosts.txt"
; etc host[...] jusqu’à 6
For $i = 0 to 6
$fichier = @ScriptDir&"\host.txt"
$fichier2 = @ScriptDir&"\hosts.txt"
$a = "C:\Windows\System32\drivers\etc\hosts2"
$hDownload = INetGet($host[$i], $fichier, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
InetClose($hDownload)
;$c = FileRead($fichier)
Local $aArray = 0
_FileReadToArray($fichier,$aArray)
For $j = 1 to $aArray[0]
$fl = StringStripWS($aArray[$j],8)
If StringInStr($fl,"0.0.0.0",2) <> 0 Then
$fl = StringReplace($fl,"0.0.0.0","127.0.0.1")
EndIf
If StringInStr($fl,"#127.0.0.1",2) <> 0 Then
$fl = StringReplace($fl,"#127.0.0.1","127.0.0.1")
EndIf
If StringInStr($b,"#",2) <> 0 Then
$fl = StringReplace($fl,$fl,"")
EndIf
$fl = StringReplace($fl,"127.0.0.1","127.0.0.1 ")
If ($fl <> "") Then
FileWriteLine($a,$fl)
EndIf
Next
Next
Après je regarde si le fichier que je lis n'a pas des doublons avec le host j'ajoute que ceux ki ne sont pas dans la liste par ordre alpha
► Afficher le texte
Code : Tout sélectionner
#include <InetConstants.au3>
#include <Array.au3>
#include <File.au3>
$a = "C:\Windows\System32\drivers\etc\hosts2"
$t = "C:\Windows\System32\drivers\etc\hosts3"
Local $aArray = 0
_FileReadToArray($a,$aArray)
Local $Tableau[$aArray[0]]
$Var = -1
For $j = 1 to $aArray[0]
$b = FileReadLine($a,$j)
If StringInStr($b,"#127.0.0.1",2) <> 0 Then
$b = StringReplace($b,"#127.0.0.1","127.0.0.1")
EndIf
If StringInStr($b,"#",2) <> 0 Then
$b = StringReplace($b,$b,"")
EndIf
If ($b <> "") Then
$b = StringReplace($b,"127.0.0.1","127.0.0.1 ")
$Tableau[$Var+1] = $b
$Var += 1
;FileWriteLine($t,$b)
EndIf
Next
_ArraySort($Tableau)
_ArrayDisplay($Tableau, "$aArray Unique")
_FileWriteFromArray($t, $Tableau)
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#4
Message
par mikell » jeu. 20 mars 2014 17:22
► Afficher le texte fichier de test
Code : Tout sélectionner
# MalwareDomainList.com Hosts List #
# http://www.malwaredomainlist.com/hostslist/hosts.txt #
# Last updated: Thu, 20 Mar 14 15:32:31 +0000 #
#127.0.0.1 localhost1
0.0.0.0 localhost2
127.0.0.1 localhost
127.0.0.1 00398d0.netsolhost.com
127.0.0.1 localhost
127.0.0.1 0koryu0.easter.ne.jp
127.0.0.1 1.michaelwilsonmusic.com
127.0.0.1 109-204-26-16.netconnexion.managedbroadband.co.uk
127.0.0.1 11.lamarianella.info
127.0.0.1 1364ih5d6.ni.net.tr
127.0.0.1 197.242.148.159-static.reverse.softlayer.com
127.0.0.1 199.193.232.43-static.reverse.softlayer.com
127.0.0.1 1k.pl
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
; INetGet("http://www.malwaredomainlist.com/hostslist/hosts.txt", "1.txt")
$file = FileRead("1.txt")
$lines = StringRegExp($file, '(?m)(^#?\d.+)\R?', 3)
For $j = 0 to UBound($lines)-1
$lines[$j] = StringRegExpReplace($lines[$j], '#?(127.0.0.1|0.0.0.0)\s+', "127.0.0.1 ")
Next
_ArrayDisplay($lines)
$b = _ArrayUnique($lines)
_ArrayDisplay($b)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
shadsnob
Niveau 3
Messages : 42 Enregistré le : lun. 16 mai 2011 11:48
Status :
Hors ligne
#5
Message
par shadsnob » jeu. 20 mars 2014 17:50
je l'avais tester mais j'arrive pas a intégrer _ArrayUnique() dans le programme et voir l'alléger car quand je lance tout les hosts cela rend plus de temps que par exemple le logiciel hostman
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#6
Message
par mikell » jeu. 20 mars 2014 17:52
Je viens d'éditer, regarde l'exemple
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
shadsnob
Niveau 3
Messages : 42 Enregistré le : lun. 16 mai 2011 11:48
Status :
Hors ligne
#7
Message
par shadsnob » jeu. 20 mars 2014 18:48
Sa marche mais je suis en train de modifier ton code pour que je puisse utiliser inetget qui me permet de récupérer les fichiers comme ton 1.txt et a la fin de l'assemblage de tous les ineget en un seul fichier je fais la fin du code