Merci pour votre réponse cependant la fenêtre est déjà lancée et elle va charger une liste d'adresse ip contenu dans un fichier .txt, il s'agit bien de commande type dos mais dans un invite de commande déjà lancé.
je met le code entier peu être que ça sera plus clair.Comme je débute il y a des messagebox pour vérifier que j'ai la bonne information dans mes variables.
Run ("C:\diffusion\diffusion.bat //b")
pour information ce fichier .bat contient :
c:\pstools\psexec @C:\diffusion\ipenligne.txt -u administrateur -p PASSWORD cmd.exe
C'est dans cette fenêtre que vont aller les commandes.
Code : Tout sélectionner
$fichier = "ip.txt"
$count = _FileCountLines($fichier)
;fonction ci-dessous pour compter le nombre de ligne et donc le nombre d ip et donc nombre de test de ping puis le nombre d'étape d'envoi
Func _FileCountLines($sFilePath)
Local $N = FileGetSize($sFilePath) - 1
;~ If @error Or $N = -1 Then Return 0
;~ Return StringLen(StringAddCR(FileRead($sFilePath, $N))) - $N + 1
Local $hFile, $sFileContent, $aTmp
$hFile = FileOpen($sFilePath, 0)
If $hFile = -1 Then Return SetError(1, 0, 0)
$sFileContent = StringStripWS(FileRead($hFile), 2)
FileClose($hFile)
If StringInStr($sFileContent, @CR) Then
$aTmp = StringSplit(StringStripCR($sFileContent), @LF)
ElseIf StringInStr($sFileContent, @CR) Then
$aTmp = StringSplit($sFileContent, @CR)
ElseIf Not $sFileContent = "" Then
$aTmp=StringLen(StringAddCR(FileRead($sFilePath, $N))) - $N + 1
Else
Return SetError(2, 0, 0)
EndIf
If IsArray($aTmp) Then
Return $aTmp[0]
Else
Return $aTmp
EndIf
EndFunc ;==>_FileCountLines
For $i = 1 To $count step 1
$file_dhcp = FileOpen("ip.txt", 0)
$dhcp = FileReadLine($file_dhcp, $i)
MsgBox(164, "IP", $dhcp)
MsgBox(164,"ETAPE","ETAPE NUMERO : "& $i)
sleep(500)
; Ping la variable $dhcp qui contient les ip de ip.txt avec timeout à 250ms.
Local $iPing = Ping($dhcp, 250)
MsgBox(164, "RESULTAT PING : ", $iPing)
if $iPing=0 Then
MsgBox(164, "RESULTAT PING : ", $dhcp &" : n'est pas en ligne"& $iPing)
$File = "ipenligne.txt"
Else
MsgBox(164, "RESULTAT PING : ", $dhcp &" : est en ligne"& $iPing)
$File = "ipenligne.txt"
$Text = $dhcp&@CRLF
FileWrite($File, $Text)
EndIf
Next
sleep(3000)
Run ("C:\diffusion\diffusion.bat //b")
;on compte le nbre de lignes du nouveau fichier
$fichier2 = "ipenligne.txt"
$count2 = _FileCountLines($fichier2)
;MsgBox(164, "IP", $count2)
For $i = 1 To $count2 step 1
Call (_envoi)
sleep(500)
Next
sleep(3000)
filedelete("c:\diffusion\ipenligne.txt")
Func _envoi()
sleep(15000)
Send ("c: {enter}")
sleep(3000)
Send ("net use x: \\172.23.197.193\diffusion /user:cpomoa cpomoa {enter}")
sleep(5000)
Send ("mkdir c:\diff {enter}")
sleep(2000)
Send ("x: {enter}")
sleep(2000)
Send ("cd moway {enter}")
sleep(2000)
Send ("copy /y moway.exe c:\diff\ {enter}")
sleep(2000)
Send ("c: {enter}")
sleep(2000)
Send ("net use x: /delete {enter}")
sleep(2000)
Send ("exit {enter}")
sleep(2000)
EndFunc
Exit
Si quelqu'un a une idée ou une autre façon de procéder pour le même résultat, merci d'avance.