[R] Création de variable dynamique a partir d'un tableau ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
whipper
Niveau 1
Niveau 1
Messages : 13
Enregistré le : jeu. 24 avr. 2008 08:27
Status : Hors ligne

[R] Création de variable dynamique a partir d'un tableau ?

#1

Message par whipper »

Bonjour a tous je suis en train de créer un script pour permettre l'extinction des VM Hyper-V a distance
Le script va lire dans un premier temps un fichier ini (dynamique) qui contient la liste des noms de machines (Serveur Hyper V et VM)
Ex du contenu du fichier:
SERV-HYPERV
SERV-ADS1
WIN7-WS01
WIN7-WS02
WIN7-WS03
Etc...


Le but étant de donner une variable a chaque nom de machine car elles vont subires plusieurs requêtes PING dans le script
(vérification avant et après extinction, important d'éteindre les VM avant le Serveur HYPERV lui même)
Donc j'importe tout dans un tableau, mais ensuite j'aimerai exporter les noms de machine a des variables dynamiques, exploitable pour la suite du script et la je n'y arrive pas (d'ou la fin de script en variable manuel)
Quelqu'un aurait-il une idée a me proposer ?!?

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>

;Variables
Dim $aRecords, $Fichier, $Calcvar, $Line, $Line_r
$Fichier = @ScriptDir & "\inv.ini"
Local $n = _FileCountLines($Fichier)
;~ MsgBox(0, "Result", $n)


;Lecture du fichier et mise en tableau
If Not _FileReadToArray($Fichier, $aRecords) Then
    MsgBox(4096, "Error", " Error reading log to Array     error:" & @error)
    Exit
EndIf

;~ _ArrayDisplay($aRecords)

Dim $Line[$aRecords[0]]
$Line_r = 0
;boucle for next
For $x = 1 To $aRecords[0]
    $Line[$Line_r] = $aRecords[$x]
    $Line_r += 1
Next

;~ _ArrayDisplay($Line)

$VM1 = $Line [0]
$VM2 = $Line [1]
$VM3 = $Line [2]
$VM4 = $Line [3]
$VM5 = $Line [4]

Msgbox(0, "Result", "Ligne1 = " & $VM1)
Msgbox(0, "Result", "Ligne2 = " & $VM2)
Msgbox(0, "Result", "Ligne3 = " & $VM3)
Msgbox(0, "Result", "Ligne4 = " & $VM4)
Msgbox(0, "Result", "Ligne5 = " & $VM5)

 
Modifié en dernier par whipper le dim. 06 mai 2012 18:37, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Création de variable dynamique a partir d'un tablea

#2

Message par mikell »

Code : Tout sélectionner

Global $VM1, $VM2, $VM3, $VM4, $VM5, $VM6, $VM7, $VM8   ; etc
$txt = FileRead(@ScriptDir & "\inv.ini")
$items = StringRegExp($txt, '([^\s]+)', 3)  ; le tableau
For $i = 0 to UBound($items)-1
  Assign("VM" & $i+1, $items[$i])   ; attribue la valeur à la variable
Next
Msgbox(0,"", $VM1 &@crlf& $VM2 &@crlf& $VM3 &@crlf& $VM4 &@crlf& $VM5)
L'avantage du regexp est qu'il gère les éventuelles erreurs d'espaces en début et fin de ligne dans le ini, exemple

Code : Tout sélectionner

SERV-HYPERV   
     SERV-ADS1
WIN7-WS01

    WIN7-WS02
WIN7-WS03
Cela dit ça serait plus facile de travailler directement avec les $items[$i] qui sont des variables :wink:

Code : Tout sélectionner

$txt = FileRead(@ScriptDir & "\inv.ini")
If not @error Then $items = StringRegExp($txt, '([^\s]+)', 3)  ; le tableau
If IsArray($items) Then Msgbox(0,"", $items[0] &@crlf& $items[1] &@crlf& $items[2] &@crlf& $items[3] &@crlf& $items[4])
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
whipper
Niveau 1
Niveau 1
Messages : 13
Enregistré le : jeu. 24 avr. 2008 08:27
Status : Hors ligne

Re: [..] Création de variable dynamique a partir d'un tablea

#3

Message par whipper »

Diantre et moi qui cherchais compliqué :D

Merci beaucoup !!!
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Création de variable dynamique a partir d'un tablea

#4

Message par silvere »

Si c'est résolut, faut que tu édite le titre de ton premier message par [R] Création de variable dynamique a partir d'un tableau ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Répondre