Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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:\nouveau dossier\test.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:\nouveau dossier\test.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 dossier\test.txt", Lecture)
readalltextfile = f.ReadAll
newtextfile = Replace(readalltextfile, "connecté=3","connecté=0")
Set f = fso.OpenTextFile("c:\%USERPROFILE%\nouveau dossier\test.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 :-)

4 réponses

Avatar
Michel__D
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%")
Avatar
nicolas21
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 .
Avatar
jbongran
"nicolas21" a écrit dans le message de
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
Avatar
nicolas21
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 :-)