Page 1 sur 2
[..] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 11:42
par Doccc
Bonjour,
Grâce à un batch, j'ai récupérer dans un fichier texte la commande ping -a :
Code : Tout sélectionner
Envoi d'une requˆte 'ping' sur serv147.omf.local [172.23.4.2] avec 32 octets de donn‚esÿ:
Envoi d'une requˆte 'ping' sur uc1152.omf.local [172.23.4.3] avec 32 octets de donn‚esÿ:
Envoi d'une requˆte 'ping' sur uc1142.omf.local [172.23.4.3] avec 32 octets de donn‚esÿ:
Envoi d'une requˆte 'ping' sur serv1142.omf.local [172.23.4.3] avec 32 octets de donn‚esÿ:
[...]
Et je voudrais savoir si c'était possible de récupérer dans un fichier texte ceci :
Et dans un autre fichier texte ceci :
Merci d'avance pour vos réponses,
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 14:01
par Yogui
avec la commande StringSplit c'est possible de "spliter" (découper) une chaine dans un tableau;
Pour lire le fichier "source" utiliser la fonction :
FileReadLine explication en suivant le lien
puis à la place de MsgBox(0, "Line read:", $line) mettre le code suivant :
Code : Tout sélectionner
;découper la ligne en lecture avec comme séparateur : " " (espace)
$split = StringSplit($line," ")
; MsgBox(0,"",$split[6])
; je vérifie dans quel cas je suis
$var = Stringleft($split[6], 2)
if $var = "uc" Then
FileWrite("c:\fichier2.txt", $split[6] &@CRLF)
Else
FileWrite("c:\fichier1.txt", $split[6] &@CRLF)
EndIf
Voilà en tout cas comment je ferai
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 14:15
par Doccc
Merci pour cette réponse, ton code marche sans soucy.
Maintenant il faut que je trouve pour lui dire d'aller chercher dans le fichier texte et non lui donner une valeur manuellement !!
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 14:32
par Yogui
Avez vous suivie le lien suivant : ?
http://www.autoitscript.com/autoit3/doc ... adLine.htm
edit
(c'est certainement de ma faute j'ai édité ma première réponse que je trouvai incomplète)
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 15:34
par Doccc
Il faut en fait faire un compteur a chaque fois il incrémente mais si on sait pas le nombre de ligne à l'avance ??
$compteur=1
$string=FileReadLine ( P:\applications\ListeIP.txt [, 1])
$compteur +1
Je vois pas trop comment tourner ma boucle en fait.
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 15:37
par Yogui
le compteur est déjà dans le while1
qui est en fait une boucle infinie mais la ligne :
If @error = -1 Then ExitLoop
te fait sortir de la boucle
Code : Tout sélectionner
$file = FileOpen("test.txt", 0)
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$split = StringSplit($line," ")
MsgBox(0,"",$split[6])
$var = Stringleft($split[6], 2)
if $var = "uc" Then
FileWrite("c:\fichier2.txt", $split[6] &@CRLF)
Else
FileWrite("c:\fichier1.txt", $split[6] &@CRLF)
EndIf
Wend
FileClose($file)
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 16:08
par Doccc
Je t'embéte encore
Merci beaucoup déjà !
Aparament il boucle une premiere fois et aprés j'ai une erreur :
Tu sais d'ou sa peut venir ?
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 16:32
par jbnh
Code : Tout sélectionner
#include <string.au3>
;------------------------------------------------
$filename = 'test.txt'
;------------------------------------------------
$file = FileOpen($filename, 0)
$read = FileRead($file)
$line = StringSplit($read, @CR)
For $i = 1 To $line[0]
$var = FileReadLine($file, $i)
$newline = _StringBetween($var, "ing' sur ", "[172.2")
If IsArray ($newline) Then
$result = StringLeft($newline[0], 4)
If $result = "serv" Then
FileWrite("fichier1.txt", $newline[0]&@CRLF)
Else
FileWrite("fichier2.txt", $newline[0]&@CRLF)
Endif
Else
MsgBox(16,"","Aucune chaîne trouvée")
EndIf
Next
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 16:50
par Doccc
J'ai un peu plus de mal à comprendre ton code, si tu pouvais m'éclaircir ...
Mon fichier d'origine n'est plus aussi simple enfait :
Code : Tout sélectionner
Envoi d'une requˆte 'ping' sur serv147.omf.local [172.23.4.2] avec 32 octets de donn‚esÿ:
R‚ponse de 172.23.4.2ÿ: octets=32 temps<1ms TTL=64
Statistiques Ping pour 172.23.4.2:
Paquetsÿ: envoy‚s = 1, re‡us = 1, perdus = 0 (perte 0%),
Dur‚e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Envoi d'une requˆte 'ping' sur uc1152.omf.local [172.23.5.2] avec 32 octets de donn‚esÿ:
R‚ponse de 172.23.5.2ÿ: octets=32 temps<1ms TTL=64
Statistiques Ping pour 172.23.5.2:
Paquetsÿ: envoy‚s = 1, re‡us = 1, perdus = 0 (perte 0%),
Dur‚e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Envoi d'une requˆte 'ping' sur uc1600.omf.local [172.23.6.1] avec 32 octets de donn‚esÿ:
R‚ponse de 172.23.6.1ÿ: octets=32 temps<1ms TTL=128
Statistiques Ping pour 172.23.6.1:
Paquetsÿ: envoy‚s = 1, re‡us = 1, perdus = 0 (perte 0%),
Dur‚e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Envoi d'une requˆte 'ping' sur template [172.23.4.2] avec 32 octets de donn‚esÿ:
R‚ponse de 172.23.4.2ÿ: octets=32 temps<1ms TTL=128
Statistiques Ping pour 172.23.4.2:
Paquetsÿ: envoy‚s = 1, re‡us = 1, perdus = 0 (perte 0%),
Dur‚e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Je ne pense pas que sa change grand chose sauf que, dans un fichier on veut les serv, dans un autre les uc et le reste on y veut pas !
Merci

Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 18:08
par Yogui
Doccc a écrit :Je t'embéte encore
Merci beaucoup déjà !
Aparament il boucle une premiere fois et aprés j'ai une erreur :
Tu sais d'ou sa peut venir ?
oui de cette ligne
Statistiques Ping pour 172.23.4.2:
qui n'a pas 6 éléments ... si pas de solution ce soir je regarderai à nouveau
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 18:31
par Doccc
D'accord, merci de te penché sur mon cas, et je voulais savoir pour le while, il manque pas un eof = true ?
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 21:26
par Yogui
il me semble que maintenant ça fonctionne
Code : Tout sélectionner
#include <file.au3>
#Include <Array.au3>
;-------------------------------------------
Dim $recherche = "Envoi d'une requˆte"
$filename = 'c:\files.txt'
$filename2 = 'c:\serv.txt'
$filename3 = 'c:\uc.txt'
dim $Separator= " "
Dim $array
dim $res
;-------------------------------------------
;~ fichier journal dans un tableau 1 colonne
_FileReadToArray($filename, $array)
For $X = 1 to $array[0]
;~ si la recherche est dans la ligne X alors je split le fichier avec le caractère espace
If StringInStr($array[$X], $recherche) Then
$Res = StringSplit($array[$X], $Separator)
$var = Stringleft($Res[6], 2)
if $var = "uc" Then
FileWrite($filename3, $Res[6] &@CRLF)
Elseif $var = "se" then
FileWrite($filename2, $Res[6] &@CRLF)
Else
msgbox(0,'Attention !!!', $Res[6]& " on y veut pas !")
EndIf
EndIf
Next
j'espère que ça va aller maintenant
Re: [...] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 21:32
par Yogui
Doccc a écrit :D'accord, merci de te penché sur mon cas, et je voulais savoir pour le while, il manque pas un eof = true ?
je met le code ici:
While 1
(ce while n'a pas de fin car pas de condition de sortie pas d'explication c'est juste comme ça
)
$line = FileReadLine($file)
(je charge la ligne du fichier à traiter FileReadLine prend toutes les ligne les une après les autres)
If @error = -1 Then ExitLoop
(Si @error alors je sort de mon while c'est ici que tu as une sorte de EOF la fonction FileReadLine renvoie @error = -1 si la dernière ligne du fichier est passée)
WEnd
pour faire plus simple lorsque tu arrives à la fin du fichier la variable @error passe à -1

Re: [..] Extraction et tri d'une chaine de caractére
Posté : mer. 03 sept. 2008 22:58
par jbnh
Em, je vois pas le problème avec mon script. Si tu veux pas le message d'erreur enlève la ligne: MsgBox(16,"","Aucune chaîne trouvée")
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 02:42
par Tlem
Bonsoir.
Est-ce que ceci vous convient ?
Code : Tout sélectionner
;------------------------------------------------
; Declaration des variables.
$Src = 'Test.txt'
$DstServ = "Serveur.txt"
$DstUC = "UC.txt"
;------------------------------------------------
; Lecture du fichier dans la variable $hFile.
$hFile = FileRead($Src)
; Recherche de chaine avec StringRegExp
$aVar = StringRegExp($hFile, "'ping' sur ([A-Za-z0-9._%-]+)", 3)
; Ouverture des fichiers de destination pour écriture.
$Serv = FileOpen($DstServ, 1)
$UC = FileOpen($DstUC, 1)
; Boucle de lecture du tableau résultant et répartition dans les fichiers.
For $i = 0 to UBound($aVar)-1
If StringLower(StringLeft($aVar[$i],4)) = "serv" Then FileWrite($Serv, $aVar[$i] & @CRLF)
If StringLower(StringLeft($aVar[$i],2)) = "uc" Then FileWrite($UC, $aVar[$i] & @CRLF)
Next
; Fermeture des fichiers.
FileClose($Serv)
FileClose($UC)
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 08:54
par Doccc
Yogui, j'ai toujours un probléme avec ton code :
Code : Tout sélectionner
C:\Program Files\AutoIt3\Examples\test3.au3 (17) : ==> Subscript used with non-Array variable.:
For $X = 1 to $array[0]
For $X = 1 to $array^ ERROR
Je vais me pencher là dessus et merci pour l'explication !
Jbnh, je vais faire des test avec ton script, pour voir d'ou sa vient.
Tlem, merci beaucoup, sa marche niquel !
Que de réponse, en si peut de temp sa fait plaisir, Merci !!
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 09:32
par Yogui
Problème de version Autoit ?
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 10:06
par Doccc
J'ai la version SciTE4AutoIt3 Version 1.76 .
Je suis entrain de regarder pour continuer le script la, pour par exemple me connecter en telnet à toute les ips contenu dans serveur et effectuer des commandes !
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 14:07
par Doccc
Code : Tout sélectionner
;------------------------------------------------
; Declaration des variables.
$DstServ = "P:\applications\serveur.txt"
;------------------------------------------------
; Lecture du fichier dans la variable $hFile.
$hFile = FileRead($DstServ)
; Boucle de lecture du tableau résultant
For $i = 0 to UBound($aVar)-1
Run ("cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
Send ("telnet{SPACE}$hFile{ENTER}")
Next
En reprenant votre code, faut que j'aprofondisse.
Re: [..] Extraction et tri d'une chaine de caractére
Posté : jeu. 04 sept. 2008 16:03
par Yogui
pour le telnet je ferai plutôt :
en mode invisible
Code : Tout sélectionner
Global $iPID = Run(@ComSpec & " /c telnet " & $hFile, @SW_HIDE)