Chemin UNC avec variable d'environement

Chemin UNC avec variable d'environement - VB/VBA/VBS - Programmation

Marsh Posté le 09-03-2011 à 11:15:51    

Bonjour,
 
Je dois faire un scripte en VBS pour créer un fichier donnant un chemin UNC.
Jusque la je pense avoir reussi, mais sa se complique car je dois mettre un chemin vers le profil utilisateur connecté, donc diffèrent celon l'utilisateur.
 
Étant très débutant en prog je viens vous demander de l'aide :)
 
voici mon scripte pour le moment :  
 
Const ForReading = 1, ForWriting = 2
  Set WshShell = WScript.CreateObject("WScript.Shell" )
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject" )
   Set f = fso.OpenTextFile("D:\Documents and Settings\Administrateur\Bureau\test\mail.dir", ForWriting,true)
   f.write("D:\Documents and Settings\Administrateur\Bureau\test\mail2.dir" )
 
je me suis aidé d'autre scripte pour faire celui ci. J'arrive a créer un nouveau fichier, mais je sais pas comment le placer dans le profil approprié.
 
merci de votre aide


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 09-03-2011 à 11:15:51   

Reply

Marsh Posté le 09-03-2011 à 11:17:30    

avec %USERPROFILE% sa marcherai?
 
genre : D:\Documents and Settings\%USERPROFILE%\Bureau\test\mail2.dir


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 15:16:51    

bon j'ai presque réussi :  
 
Const ForReading = 1, ForWriting = 2
Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set WshShell = WScript.CreateObject("WScript.Shell" )
Set fso = CreateObject("Scripting.FileSystemObject" )
 
Dim fso, f, Nom_utilisateur
 
Nom_utilisateur = WshNetwork.UserName  
 
Set f = fso.OpenTextFile("D:\Documents and Settings\ & Nom_utilisateur\Bureau\test\mail.dir", ForWriting,true)
f.write("D:\Documents and Settings\ & Nom_utilisateur\Bureau\test\mail2.dir" )
 
j'ai une erreure, je doit mal utiliser le symbole "&".
une petite idée de tous les lurkers la?


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 15:54:32    

Nom_utilisateur etant le nom d' une variable je mettrais plus un truc comme ca :
 
Set f = fso.OpenTextFile("D:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail.dir", ForWriting,true)  
f.write("D:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail2.dir" )  


Message édité par SuppotDeSaTante le 10-03-2011 à 15:55:08

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 16:00:45    

j'ai testé comme sa :  
 
Const ForReading = 1, ForWriting = 2
Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set WshShell = WScript.CreateObject("WScript.Shell" )
Set fso = CreateObject("Scripting.FileSystemObject" )
 
Dim fso, f, Nom_utilisateur
 
Nom_utilisateur = WshNetwork.UserName
 
Set f = fso.OpenTextFile("D:\Documents and Settings\"& Nom_utilisateur&"\Bureau\test\mail.dir", ForWriting,true)
f.write("D:\Documents and Settings\"& Nom_utilisateur&"\Bureau\test\mail2.dir" )
 
j'ai un problème en ligne 2 maintenant


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 16:10:30    

C'est a dire ?
 
ici : Set WshNetwork = WScript.CreateObject("WScript.Network" )  
?
 
 
En fait je ne pige pas... Ce script s'execute où ? En local ?
Ou par le biais du reseau tu veux savoir l'utilisateur connecté ?


Message édité par SuppotDeSaTante le 10-03-2011 à 16:11:13

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 16:15:27    

Bon je ne suis pas sur de tout saisir, mais deja quelque chose comme ca fonctionne :

Code :
  1. Sub skum()
  2. Const ForReading = 1, ForWriting = 2
  3. Set WshNetwork = CreateObject("WScript.Network" )
  4. Set WshShell = CreateObject("WScript.Shell" )
  5. Set fso = CreateObject("Scripting.FileSystemObject" )
  6. Dim f, Nom_utilisateur
  7. Nom_utilisateur = WshNetwork.UserName
  8. Set f = fso.OpenTextFile("C:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail.dir", ForWriting, True)
  9. f.write ("D:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail2.dir" )
  10. End Sub


 
Ca me créé bien un fichier mail.dir avec dedans la chaine demandée.


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 16:17:56    

ouai c'est bon sa a fonctionné en fait, il m'a mis une erreur sur la ligne 2, mais quand je le lance sa créer bien le fichier.
 
par contre a quoi sert le sub ?


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 16:26:36    

Je le fais dans Excel :jap:
autocomplétion toussa :O plus rapide que le bloc note.
 
 
Pour l'erreur : WScript.CreateObject("WScript.Network" )
 
Set WshNetwork = CreateObject("WScript.Network" ) ne fonctionne pas ?
 
Parce que là, ton utilisation de WSCript me parait douteuse...


Message édité par SuppotDeSaTante le 10-03-2011 à 16:29:33

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 16:35:37    

Je confirme, dans un fichier vbs cela fonctionne tres bien, et sans erreur :
 

Code :
  1. Const ForReading = 1, ForWriting = 2
  2. Set WshNetwork = CreateObject("WScript.Network" )
  3. Set WshShell = CreateObject("WScript.Shell" )
  4. Set fso = CreateObject("Scripting.FileSystemObject" )
  5. Dim f, Nom_utilisateur
  6. Nom_utilisateur = WshNetwork.UserName
  7. Set f = fso.OpenTextFile("C:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail.dir", ForWriting, True)
  8. f.write ("D:\Documents and Settings\" & Nom_utilisateur & "\Bureau\test\mail2.dir" )


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 16:35:37   

Reply

Marsh Posté le 10-03-2011 à 16:45:05    

voila mon code final:
 

Code :
  1. Const ForReading = 1, ForWriting = 2
  2. Set WshNetwork = WScript.CreateObject("WScript.Network" )
  3. Set WshShell = WScript.CreateObject("WScript.Shell" )
  4. Set fso = CreateObject("Scripting.FileSystemObject" )
  5. Dim fso, f, f2, Nom_utilisateur
  6. Nom_utilisateur = WshNetwork.UserName
  7. Set f = fso.OpenTextFile("C:\Documents and Settings\"& Nom_utilisateur&"\Lotus\Notes\Data\mail.dir", ForWriting,true)
  8. f.write("D:\Documents and Settings\"& Nom_utilisateur&"\Lotus\Notes\Data\\Mail" )
  9. Set f2 = fso.OpenTextFile("C:\Documents and Settings\"& Nom_utilisateur&"\Lotus\Notes\Data\archive.dir", ForWriting,true)
  10. f2.write("D:\Documents and Settings\"& Nom_utilisateur&"\Lotus\Notes\Data\Archive" )


 
il fonctionne bien, par contre dans le debug j'ai toujours une erreur sur "Set WshNetwork = WScript.CreateObject("WScript.Network" )"
mais sa marche quand meme alors je sais pas si c'est important  [:spanotfote]


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 16:45:24    

en tout cas merci pour ton aide :)


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 16:49:49    

Mais tu ne lis pas ou bien ?? :??:
 
Il ne faut pas mettre :  
Set WshNetwork = WScript.CreateObject("WScript.Network" )
 
Mais il FAUT METTRE :
Set WshNetwork = CreateObject("WScript.Network" )
 
Ensuite, si tu regardes mon code je ne redéclare pas fso, puisque tu fais un Set juste avant.
 
Tu ne vois pas la différence entre les deux ??
 
 
Essaie donc comme ca, tu verras pas d'erreur c'est lesieur :

Code :
  1. Const ForReading = 1, ForWriting = 2
  2. Set WshNetwork = CreateObject("WScript.Network" )
  3. Set WshShell = CreateObject("WScript.Shell" )
  4. Set fso = CreateObject("Scripting.FileSystemObject" )
  5. Dim  f, f2, Nom_utilisateur
  6. Nom_utilisateur = WshNetwork.UserName
  7. Set f = fso.OpenTextFile("C:\Documents and Settings\" & Nom_utilisateur & "\Lotus\Notes\Data\mail.dir", ForWriting,true)
  8. f.write("D:\Documents and Settings\" & Nom_utilisateur & "\Lotus\Notes\Data\\Mail" )
  9. Set f2 = fso.OpenTextFile("C:\Documents and Settings\" & Nom_utilisateur & "\Lotus\Notes\Data\archive.dir", ForWriting,true)
  10. f2.write("D:\Documents and Settings\" & Nom_utilisateur & "\Lotus\Notes\Data\Archive" )


 
http://www.wilogo.com/blog/wp-content/uploads/2009/03/nouveau_lesieur.png


Message édité par SuppotDeSaTante le 10-03-2011 à 16:52:29

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 10-03-2011 à 17:06:35    

ouai nikel sa marche aussi comme sa,
 
par contre a quoi il sert le WScript du coup?
mon erreur était pas gênante finalement puisque sa fonctionne pareil


---------------
"Mundi placet et spiritus minima", ça n'a aucun sens mais on pourrait très bien imaginer une traduction du type : "Le roseau plie, mais ne cède... qu'en cas de pépin" ce qui ne veut rien dire non plus.
Reply

Marsh Posté le 10-03-2011 à 20:08:57    

Bah tu utilises une methode de WScript pour creer un objet d'une librairie WScript...
C'est illogique... C'est comme si tu disais "je veux ouvrir le tiroir de la commode qui est dans la commode"... Ca n'a pas de sens...


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed