[Debutant]Récupérer variable %userprofil% dans script vbs

Le
nicolas21
Bonjour,


J'uitlise le sript Vbs suivant ( trouvé sur ce site ) que j'ai adapté :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:ouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:ouveau dossiertest.txt", Ecriture, True)
f.Write newtextfile

Cela me permet de modifier des valeurs dans un fichier texte .

Le but étant de le déployer via une gpo pour modifier un fichier ini présent dans le profil de l'utilisateur .

Je souhaiterais que cela me donne cela :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:%USERPROFILE%ouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:%USERPROFILE%ouveau dossiertest.txt", Ecriture, True)
f.Write newtextfile

Cela ne marche pas , car j'ai compris qu'il fallait déclarer les variables .

Malheuresement pour moi je suis incapable même si je déclare la variable de réutiliser le résultat :

Dim oUserProfile
oUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


Je ne vois pas du tout comment m'y prendre , j'ai beau chercher , je nage totalement .

Si quelqu'un à un peu de temps a consacrer à mon problème , je l'en remercie .

Bonne soirée :-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #18582801
Bonjour,

nicolas21 a écrit :
Bonjour,


J'uitlise le sript Vbs suivant ( trouvé sur ce site ) que j'ai adapté :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Ecriture, True)
f.Write newtextfile

Cela me permet de modifier des valeurs dans un fichier texte .

Le but étant de le déployer via une gpo pour modifier un fichier ini présent
dans le profil de l'utilisateur .

Je souhaiterais que cela me donne cela :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela ne marche pas , car j'ai compris qu'il fallait déclarer les variables .

Malheuresement pour moi je suis incapable même si je déclare la variable de
réutiliser le résultat :

Dim oUserProfile
oUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


Je ne vois pas du tout comment m'y prendre , j'ai beau chercher , je nage
totalement .

Si quelqu'un à un peu de temps a consacrer à mon problème , je l'en remercie .

Bonne soirée :-)



Cela devrait mieux fonctionner comme ceci :

Dim WshShell, sUserProfile
Set WshShell=CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
nicolas21
Le #18584101
Michel__D a écrit le 04/02/2009 à 20h46 :
Bonjour,

nicolas21 a écrit :
Bonjour,


J'uitlise le sript Vbs suivant ( trouvé sur ce site ) que j'ai
adapté :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela me permet de modifier des valeurs dans un fichier texte .

Le but étant de le déployer via une gpo pour modifier un fichier
ini présent
dans le profil de l'utilisateur .

Je souhaiterais que cela me donne cela :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau
dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau
dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela ne marche pas , car j'ai compris qu'il fallait déclarer les
variables .

Malheuresement pour moi je suis incapable même si je déclare la
variable de
réutiliser le résultat :

Dim oUserProfile
oUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


Je ne vois pas du tout comment m'y prendre , j'ai beau chercher , je nage
totalement .

Si quelqu'un à un peu de temps a consacrer à mon problème
, je l'en remercie .

Bonne soirée :-)




Cela devrait mieux fonctionner comme ceci :

Dim WshShell, sUserProfile
Set WshShell=CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


En continuant à chercher , j'ai trouver ce que vous me proposez .

Mais mon souci est comment dire plus profond pour moi , c'est que je ne comprend pas comment l'intégrer dans mon script que j'ai donner plus haut .

Car quand je rajoute ce que vous m'avez donner , je n'ai pas de message d'erreur mais il me dit que le chemin est introuvable , alors que le chemin est valide .

Mon code avec ce que vous m'avez dit ,donne cela :

Const Lecture = 1, Ecriture = 2
Dim WshShell, sUserProfile
Set WshShell=CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("%USERPROFILE%test.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("%USERPROFILE%test.txt", Ecriture, True)
f.Write newtextfile

Merci de votre aide en tosu cas .
jbongran
Le #18590671
"nicolas21" news:
Michel__D a écrit le 04/02/2009 à 20h46 :
Bonjour,

nicolas21 a écrit :
Bonjour,


J'uitlise le sript Vbs suivant ( trouvé sur ce site ) que j'ai
adapté :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela me permet de modifier des valeurs dans un fichier texte .

Le but étant de le déployer via une gpo pour modifier un fichier
ini présent
dans le profil de l'utilisateur .

Je souhaiterais que cela me donne cela :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau
dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau
dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela ne marche pas , car j'ai compris qu'il fallait déclarer les
variables .

Malheuresement pour moi je suis incapable même si je déclare la
variable de
réutiliser le résultat :

Dim oUserProfile
oUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


Je ne vois pas du tout comment m'y prendre , j'ai beau chercher , je
nage
totalement .

Si quelqu'un à un peu de temps a consacrer à mon problème
, je l'en remercie .

Bonne soirée :-)




Cela devrait mieux fonctionner comme ceci :

Dim WshShell, sUserProfile
Set WshShell=CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


En continuant à chercher , j'ai trouver ce que vous me proposez .

Mais mon souci est comment dire plus profond pour moi , c'est que je ne
comprend pas comment l'intégrer dans mon script que j'ai donner plus haut
.

Car quand je rajoute ce que vous m'avez donner , je n'ai pas de message
d'erreur mais il me dit que le chemin est introuvable , alors que le
chemin est
valide .

Mon code avec ce que vous m'avez dit ,donne cela :

Const Lecture = 1, Ecriture = 2
Dim WshShell, sUserProfile
Set WshShell=CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("%USERPROFILE%test.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("%USERPROFILE%test.txt", Ecriture, True)
f.Write newtextfile

Merci de votre aide en tosu cas .



Option Explicit
Const Lecture = 1, Ecriture = 2
Dim WshShell, sUserProfile
Set WshShell = CreateObject("WScript.Shell")
sUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
WScript.Echo "sUserProfile=" & sUserProfile
Dim fso, fileIn, fileOut, readalltextfile, newtextfile
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileIn = fso.OpenTextFile(sUserProfile & "test.txt", Lecture)
readalltextfile = fileIn.ReadAll
fileIn.Close
Set fileIn = Nothing
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set fileOut = fso.OpenTextFile(sUserProfile & "test.txt", Ecriture, True)
fileOut.Write newtextfile
fileOut.Close
Set fileOut = Nothing
Set fso = Nothing

Quelques infos:
Il est préférable de s'habituer déclarer explicitement les variables et à se
prémunir de tout oubli ou erreur de typo avec Option Explicit
Perso, j'aime bien "faire le ménage", donc je ferme et détruit les objets
crées (toujours pas clair pour moi si il y a un garbage collector, et si
oui, si il est efficace en vbs, quelqu'un ?)
C'est aussi pour cette raison que j'évite le réemploi des objets sans qu'ils
ne soient fermés/détruits (si pas de garbage colector, impossible de savoir
ce qu'est devenue l'objet précedemment créé...
La contenu de la variable système %USERPROFILE% se retrouve dans le contenu
de la variable sUserProfile
Pour creer vos chemins complets, il faut concaténer cette valeur avec la fin
du chemin "en dur" (partie qui dans ce script ne change pas et pourrait donc
avantageusement être concaténée directement à la variable sUserProfile.
Dernier truc, avec ce type de script qui ouvre un fichier en lecture, le
lit, le ferme puis le rouvre en écriture, il arrive que sur des machine
"véloces" l'on soit confronté à une erreur de type fichier vérouillé, il est
donc préférable de prévoir une tempo quelconque (WScript.Sleep).
Enfin, pour debugger rapidement ce genre de scripts, un simple WScript.Echo
de la variable à analyser suffit souvent.

Bon courage pour la suite
nicolas21
Le #18594611
nicolas21 a écrit le 04/02/2009 à 20h13 :
Bonjour,


J'uitlise le sript Vbs suivant ( trouvé sur ce site ) que j'ai
adapté :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:nouveau dossiertest.txt", Ecriture,
True)
f.Write newtextfile

Cela me permet de modifier des valeurs dans un fichier texte .

Le but étant de le déployer via une gpo pour modifier un fichier
ini présent dans le profil de l'utilisateur .

Je souhaiterais que cela me donne cela :

Const Lecture = 1, Ecriture = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau dossiertest.txt",
Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile,
"connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:%USERPROFILE%nouveau dossiertest.txt",
Ecriture, True)
f.Write newtextfile

Cela ne marche pas , car j'ai compris qu'il fallait déclarer les
variables .

Malheuresement pour moi je suis incapable même si je déclare la
variable de réutiliser le résultat :

Dim oUserProfile
oUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")


Je ne vois pas du tout comment m'y prendre , j'ai beau chercher , je nage
totalement .

Si quelqu'un à un peu de temps a consacrer à mon problème
, je l'en remercie .

Bonne soirée :-)


Je testerais demain tout cela , mais je tiens déja à vous remercier du temps que vous m'avez donner .

Merci :-)
Publicité
Poster une réponse
Anonyme