Page 1 sur 1

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

Posté : dim. 06 mai 2012 12:31
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)

 

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

Posté : dim. 06 mai 2012 15:22
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])
 

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

Posté : dim. 06 mai 2012 17:26
par whipper
Diantre et moi qui cherchais compliqué :D

Merci beaucoup !!!

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

Posté : dim. 06 mai 2012 17:52
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 ?