Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de chaque
script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans un
fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais impossible
a retrouver.
Quelqu'un connait?
Merci d'avance
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de chaque
script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans un
fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais impossible
a retrouver.
Quelqu'un connait?
Merci d'avance
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de chaque
script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans un
fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais impossible
a retrouver.
Quelqu'un connait?
Merci d'avance
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début de
leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début de
leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début de
leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bonjour,
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
portée? c'est à dire existence des variables ainsi créées en-dehors du
script? si c'est bien ça : ça ne me gêne pas du tout, je n'ai besoin de
ces variables prises dans un fichier .ini que dans le script où je dois
les affecter.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Si j'ai bien compris (car à cette heure le message de Gilles n'apparaît
toujours pas sur le serveur de news de Free) on crée un vbscript
intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des variables
ainsi créées et affectées à l'extérieur de mon script dans mon script.
Bonjour,
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
portée? c'est à dire existence des variables ainsi créées en-dehors du
script? si c'est bien ça : ça ne me gêne pas du tout, je n'ai besoin de
ces variables prises dans un fichier .ini que dans le script où je dois
les affecter.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Si j'ai bien compris (car à cette heure le message de Gilles n'apparaît
toujours pas sur le serveur de news de Free) on crée un vbscript
intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des variables
ainsi créées et affectées à l'extérieur de mon script dans mon script.
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
portée? c'est à dire existence des variables ainsi créées en-dehors du
script? si c'est bien ça : ça ne me gêne pas du tout, je n'ai besoin de
ces variables prises dans un fichier .ini que dans le script où je dois
les affecter.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Si j'ai bien compris (car à cette heure le message de Gilles n'apparaît
toujours pas sur le serveur de news de Free) on crée un vbscript
intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des variables
ainsi créées et affectées à l'extérieur de mon script dans mon script.
Michel_D a écrit le 12/05/2008 15:15:Si j'ai bien compris (car à cette heure le message de Gilles
n'apparaît toujours pas sur le serveur de news de Free) on crée un
vbscript intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des
variables ainsi créées et affectées à l'extérieur de mon script dans
mon script.
La réponse de Gilles
Je la publie également, des fois que le serveur de free ait le hoquet à
l'envers et puis parce que "Youri Ligotmi", ça me fait hurler de rire en
tant qu'ex-fan des Kinks :-)) (non d'ailleurs, pas "ex")
=============================================== >
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$
| Bonjour à tous
Bonjour,
| J'ai une série de scripts vbs qui font référence à des chemins d'accès
| (une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
| chaque script.
| C'est un peu idiot dans la mesure où je dois répéter inutilement ces
| lignes et surtout il y a un risque d'incohérence.
| Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
| un fichier ini que tous mes scripts viendraient lire au début de leur
| exécution.
| Le fichier ini serait de la forme
| chemin1 = c:tempessai
| ...
| Avec un split autour du égal je peux ensuite récupérer le nom de la
| variable et son contenu.
| ma question : comment affecter le nom de variable et le contenu? Il me
| semble avoir vu passer un truc du genre varialble execute mais
| impossible a retrouver.
|
| Quelqu'un connait?
|
| Merci d'avance
Execute :
http://msdn.microsoft.com/en-us/library/03t418d2(VS.85).aspx
ExecuteGlobal :
http://msdn.microsoft.com/en-us/library/342311f1(VS.85).aspx
--- PathDef.ini ---
chemin1 = "c:tempessai1"
chemin2 = "c:tempessai2"
--- PathDef.ini ---
--- LoadPathFromIni.vbs ---
Sub LoadPathFromIni (strIniFile)
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFile=oFs.OpenTextFile(strIniFile)
Execute oFile.ReadAll()
End Sub
LoadPathFromIni("D:TestPathDef.ini")
WScript.Echo chemin1
WScript.Echo chemin2
--- LoadPathFromIni.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Michel_D a écrit le 12/05/2008 15:15:
Si j'ai bien compris (car à cette heure le message de Gilles
n'apparaît toujours pas sur le serveur de news de Free) on crée un
vbscript intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des
variables ainsi créées et affectées à l'extérieur de mon script dans
mon script.
La réponse de Gilles
Je la publie également, des fois que le serveur de free ait le hoquet à
l'envers et puis parce que "Youri Ligotmi", ça me fait hurler de rire en
tant qu'ex-fan des Kinks :-)) (non d'ailleurs, pas "ex")
=============================================== >
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr
| Bonjour à tous
Bonjour,
| J'ai une série de scripts vbs qui font référence à des chemins d'accès
| (une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
| chaque script.
| C'est un peu idiot dans la mesure où je dois répéter inutilement ces
| lignes et surtout il y a un risque d'incohérence.
| Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
| un fichier ini que tous mes scripts viendraient lire au début de leur
| exécution.
| Le fichier ini serait de la forme
| chemin1 = c:tempessai
| ...
| Avec un split autour du égal je peux ensuite récupérer le nom de la
| variable et son contenu.
| ma question : comment affecter le nom de variable et le contenu? Il me
| semble avoir vu passer un truc du genre varialble execute mais
| impossible a retrouver.
|
| Quelqu'un connait?
|
| Merci d'avance
Execute :
http://msdn.microsoft.com/en-us/library/03t418d2(VS.85).aspx
ExecuteGlobal :
http://msdn.microsoft.com/en-us/library/342311f1(VS.85).aspx
--- PathDef.ini ---
chemin1 = "c:tempessai1"
chemin2 = "c:tempessai2"
--- PathDef.ini ---
--- LoadPathFromIni.vbs ---
Sub LoadPathFromIni (strIniFile)
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFile=oFs.OpenTextFile(strIniFile)
Execute oFile.ReadAll()
End Sub
LoadPathFromIni("D:TestPathDef.ini")
WScript.Echo chemin1
WScript.Echo chemin2
--- LoadPathFromIni.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Michel_D a écrit le 12/05/2008 15:15:Si j'ai bien compris (car à cette heure le message de Gilles
n'apparaît toujours pas sur le serveur de news de Free) on crée un
vbscript intégrant ces variables dans son code puis on l'exécute.
Technique qui me rappelle des choses que je faisais en bat.
Par contre dans ce cas je me pose la question de la portée des
variables ainsi créées et affectées à l'extérieur de mon script dans
mon script.
La réponse de Gilles
Je la publie également, des fois que le serveur de free ait le hoquet à
l'envers et puis parce que "Youri Ligotmi", ça me fait hurler de rire en
tant qu'ex-fan des Kinks :-)) (non d'ailleurs, pas "ex")
=============================================== >
"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$
| Bonjour à tous
Bonjour,
| J'ai une série de scripts vbs qui font référence à des chemins d'accès
| (une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
| chaque script.
| C'est un peu idiot dans la mesure où je dois répéter inutilement ces
| lignes et surtout il y a un risque d'incohérence.
| Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
| un fichier ini que tous mes scripts viendraient lire au début de leur
| exécution.
| Le fichier ini serait de la forme
| chemin1 = c:tempessai
| ...
| Avec un split autour du égal je peux ensuite récupérer le nom de la
| variable et son contenu.
| ma question : comment affecter le nom de variable et le contenu? Il me
| semble avoir vu passer un truc du genre varialble execute mais
| impossible a retrouver.
|
| Quelqu'un connait?
|
| Merci d'avance
Execute :
http://msdn.microsoft.com/en-us/library/03t418d2(VS.85).aspx
ExecuteGlobal :
http://msdn.microsoft.com/en-us/library/342311f1(VS.85).aspx
--- PathDef.ini ---
chemin1 = "c:tempessai1"
chemin2 = "c:tempessai2"
--- PathDef.ini ---
--- LoadPathFromIni.vbs ---
Sub LoadPathFromIni (strIniFile)
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFile=oFs.OpenTextFile(strIniFile)
Execute oFile.ReadAll()
End Sub
LoadPathFromIni("D:TestPathDef.ini")
WScript.Echo chemin1
WScript.Echo chemin2
--- LoadPathFromIni.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bonjour,
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins d'accès
(une 15aine). Jusqu'à présent ces chemins sont déclarés en tête de
chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement ces
lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute dans
un fichier ini que tous mes scripts viendraient lire au début de leur
exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il me
semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse, elle,
est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
des fois que le serveur de free ait le hoquet à l'envers
des fois que le serveur de free ait le hoquet à l'envers
des fois que le serveur de free ait le hoquet à l'envers
"Michel_D" a écrit dans le message
de news:%Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bien vu en ce qui concerne la portée, il suffit de sortir le code des
subs (ce qui était la version d'origine, mais je la trouvait brouillon
après avoir ajouté les lignes pour afficher le résultat) et dans la
boucle mettre à la place de Call MakeDynamicVar(Trim(arrtmp(0)),
Trim(arrtmp(1))) les deux lignes suivantes (non testé pour le deuxième
Execute):
Execute("Dim " & Trim(arrtmp(0)))
Execute(Trim(arrtmp(0)) & "=" & Trim(arrtmp(1)))
Le code ici était juste pour montrer la création dynamique de variables,
maintenant on a l'exemple de l'affectation de valeurs aux variables ;-)
Comme il est convenu (en tout cas dans les best practice de MS)
d'utiliser un Option Explicit, si on ne créé pas dynamiquement les
variables, soit il faut déclarer des variables 'génériques' du style
strVar1, strVar2 ce qui rend le code m....dique, soit éditer tous les
fichiers qui font appel au variables du fichier .ini
Avec le code proposé, on peut facilement ajouter dans la boucle un If
Not fso.FileExists(Nom-De-La-Variable) ou préfixer les noms de variables
pour traitement particulier, etc.
Attention, je ne dis pas que le code de Gilles n'est pas bon (manquerait
plus que ça), d'ailleurs j'avais commencé avec un Execute du readAll,
mais l'obligation d'encadrer les chemins entre double guillemets ne me
plaisait pas et je tenais à un affichage en sortie de ce qui se passe,
ce que je ne suis pas arrivé à faire avec l'Execute du readAll, Gilles ?
;-)
"Michel_D" <Michel.NOSPAM@orange-ft.com.invalid> a écrit dans le message
de news:%23ANB6GCtIHA.4076@TK2MSFTNGP06.phx.gbl...
Bonjour,
"Youri Ligotmi" <yl@free.fr.invalid> a écrit dans le message de
news:4826bf67$0$30943$426a34cc@news.free.fr...
Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bien vu en ce qui concerne la portée, il suffit de sortir le code des
subs (ce qui était la version d'origine, mais je la trouvait brouillon
après avoir ajouté les lignes pour afficher le résultat) et dans la
boucle mettre à la place de Call MakeDynamicVar(Trim(arrtmp(0)),
Trim(arrtmp(1))) les deux lignes suivantes (non testé pour le deuxième
Execute):
Execute("Dim " & Trim(arrtmp(0)))
Execute(Trim(arrtmp(0)) & "=" & Trim(arrtmp(1)))
Le code ici était juste pour montrer la création dynamique de variables,
maintenant on a l'exemple de l'affectation de valeurs aux variables ;-)
Comme il est convenu (en tout cas dans les best practice de MS)
d'utiliser un Option Explicit, si on ne créé pas dynamiquement les
variables, soit il faut déclarer des variables 'génériques' du style
strVar1, strVar2 ce qui rend le code m....dique, soit éditer tous les
fichiers qui font appel au variables du fichier .ini
Avec le code proposé, on peut facilement ajouter dans la boucle un If
Not fso.FileExists(Nom-De-La-Variable) ou préfixer les noms de variables
pour traitement particulier, etc.
Attention, je ne dis pas que le code de Gilles n'est pas bon (manquerait
plus que ça), d'ailleurs j'avais commencé avec un Execute du readAll,
mais l'obligation d'encadrer les chemins entre double guillemets ne me
plaisait pas et je tenais à un affichage en sortie de ce qui se passe,
ce que je ne suis pas arrivé à faire avec l'Execute du readAll, Gilles ?
;-)
"Michel_D" a écrit dans le message
de news:%Bonjour,"Youri Ligotmi" a écrit dans le message de
news:4826bf67$0$30943$Bonjour à tous
J'ai une série de scripts vbs qui font référence à des chemins
d'accès (une 15aine). Jusqu'à présent ces chemins sont déclarés en
tête de chaque script.
C'est un peu idiot dans la mesure où je dois répéter inutilement
ces lignes et surtout il y a un risque d'incohérence.
Ce que je voudrais c'est déclarer ces chemins une fois pour toute
dans un fichier ini que tous mes scripts viendraient lire au début
de leur exécution.
Le fichier ini serait de la forme
chemin1 = c:tempessai
...
Avec un split autour du égal je peux ensuite récupérer le nom de la
variable et son contenu.
ma question : comment affecter le nom de variable et le contenu? Il
me semble avoir vu passer un truc du genre varialble execute mais
impossible a retrouver.
Quelqu'un connait?
Merci d'avance
Un exemple sous forme de deux subs, mais je ne suis pas sûr d'avoir
bien compris la demande:
# -- Début
Option Explicit
Sub ReadVarsFromFile(IniFile)
Dim i, Fso, objIni, arrtmp
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ObjIni = Fso.OpenTextFile(IniFile, 1)
Do Until objIni.AtEndOfStream
arrtmp = Split(objIni.ReadLine, "=")
Call MakeDynamicVar(Trim(arrtmp(0)), Trim(arrtmp(1)))
Loop
objIni.Close
Set objIni = Nothing
Set Fso = Nothing
End Sub
Sub MakeDynamicVar(VarName, VarValue)
Dim Nametmp
Nametmp = VarName
Execute("Dim " & VarName)
VarName = VarValue
Wscript.Echo Nametmp & " = " & VarName
End Sub
Call ReadVarsFromFile("D:Scriptspaths.ini")
Effectivement ma demande n'était pas très claire, votre réponse,
elle, est parfaite : c'est exactement ce que je recherchais.
Moi je serais toi je regarderai la portée des variables ainsi crées
(à cause du Dim) et je suis pas sur que ce soit ce que tu recherche.
La proposition de Gilles n'a pas ce problème ou si tu tiens à tes Dim,
tu crée une chaîne de caractére correspondant au code qui doit être
exécuté et tu l'exécute à l'extérieur de toutes procédures/fonctions.
Bien vu en ce qui concerne la portée, il suffit de sortir le code des
subs (ce qui était la version d'origine, mais je la trouvait brouillon
après avoir ajouté les lignes pour afficher le résultat) et dans la
boucle mettre à la place de Call MakeDynamicVar(Trim(arrtmp(0)),
Trim(arrtmp(1))) les deux lignes suivantes (non testé pour le deuxième
Execute):
Execute("Dim " & Trim(arrtmp(0)))
Execute(Trim(arrtmp(0)) & "=" & Trim(arrtmp(1)))
Le code ici était juste pour montrer la création dynamique de variables,
maintenant on a l'exemple de l'affectation de valeurs aux variables ;-)
Comme il est convenu (en tout cas dans les best practice de MS)
d'utiliser un Option Explicit, si on ne créé pas dynamiquement les
variables, soit il faut déclarer des variables 'génériques' du style
strVar1, strVar2 ce qui rend le code m....dique, soit éditer tous les
fichiers qui font appel au variables du fichier .ini
Avec le code proposé, on peut facilement ajouter dans la boucle un If
Not fso.FileExists(Nom-De-La-Variable) ou préfixer les noms de variables
pour traitement particulier, etc.
Attention, je ne dis pas que le code de Gilles n'est pas bon (manquerait
plus que ça), d'ailleurs j'avais commencé avec un Execute du readAll,
mais l'obligation d'encadrer les chemins entre double guillemets ne me
plaisait pas et je tenais à un affichage en sortie de ce qui se passe,
ce que je ne suis pas arrivé à faire avec l'Execute du readAll, Gilles ?
;-)