[vbs] recup user name pr copier un fichier sur le bureau

recup user name pr copier un fichier sur le bureau [vbs] - VB/VBA/VBS - Programmation

Marsh Posté le 10-07-2015 à 17:12:49    

Bonjour,  
 
Je dois copier un fichier depuis une clef usb sur le bureau de plusieurs PC dont je ne connais pas les noms de session.
 
Apparemment mon code ne fonctionne pas, il n'arrive pas soit à récupérer le nom de session soit ça veut pas utiliser la variable du nom de session lorsqu'elle est placée dans un chemin d'accès lors de l'utilisation d'une autre fonction.
 
 
' copie du raccourcis de la page d’accueil sur le bureau :
 
 
Dim sOriginFolder, sDestinationFolder, sFile, oFSO, strSessionName
 
Set wshShell = WScript.CreateObject("WScript.Shell" )
strSessionName = WshShell.ExpandEnvironmentStrings("%SESSIONNAME%" )
 
 Set oFSO = CreateObject("Scripting.FileSystemObject" )
 sOriginFolder = "C:\Users\Utilisateur\Downloads\Videos\in\home_shortcut"   ' copie le raccourcis du dossier home_shortcut
 sDestinationFolder = "C:\Users\strSessionName\Desktop"                            ' colle le raccourcis dans le dossier bureau
 
 
 For Each sFile In oFSO.GetFolder(sOriginFolder).Files
  If Not oFSO.FileExists(sDestinationFolder & "\" & oFSO.GetFileName(sFile)) Then
   oFSO.GetFile(sFile).Copy sDestinationFolder & "\" & oFSO.GetFileName(sFile),True
 
   'popup copie réalisée: WScript.Echo "Copying : " & Chr(34) & oFSO.GetFileName(sFile) & Chr(34) & " to " & sDestinationFolder
  End If
 Next  
 
 
Merci d'avance pour votre aide  :)

Reply

Marsh Posté le 10-07-2015 à 17:12:49   

Reply

Marsh Posté le 11-07-2015 à 11:59:50    

Normal... tu places en cible "C:\Users\strSessionName\Desktop" donc pour un hypothétique utilisateur "strSessionName"...

' copie du raccourcis de la page d’accueil sur le bureau :
 
 
Dim sOriginFolder, sDestinationFolder, sFile, oFSO, strSessionName
 
Set wshShell = WScript.CreateObject("WScript.Shell" )
strSessionName = WshShell.ExpandEnvironmentStrings("%SESSIONNAME%" )
 
 Set oFSO = CreateObject("Scripting.FileSystemObject" )
 sOriginFolder = "C:\Users\" & strSessionName & "\Downloads\Videos\in\home_shortcut"   ' copie le raccourcis du dossier home_shortcut
 sDestinationFolder = "C:\Users\" & strSessionName & "\Desktop"                            ' colle le raccourcis dans le dossier bureau
 
 
 For Each sFile In oFSO.GetFolder(sOriginFolder).Files
  If Not oFSO.FileExists(sDestinationFolder & "\" & oFSO.GetFileName(sFile)) Then
   oFSO.GetFile(sFile).Copy sDestinationFolder & "\" & oFSO.GetFileName(sFile),True
 
   'popup copie réalisée: WScript.Echo "Copying : " & Chr(34) & oFSO.GetFileName(sFile) & Chr(34) & " to " & sDestinationFolder
  End If
 Next  


Par contre avec ce code tu ne copies pas un raccourcis, tu copies l'intégralité d'un dossier.

 

Il vaudrait mieux créer un raccourci sur le bureau :


Dim Shell, DesktopPath, strSessionName, oShellLink

 

Set Shell = CreateObject("WScript.Shell" )
strSessionName = WshShell.ExpandEnvironmentStrings("%SESSIONNAME%" )
DesktopPath = Shell.SpecialFolders("Desktop" )
set oShellLink = Shell.CreateShortcut(DesktopPath & "\Vidéos.lnk" )
oShellLink.WindowStyle = 1
oShellLink.TargetPath = "C:\Users\" & strSessionName & "\"
oShellLink.WorkingDirectory = "C:\Users\" & strSessionName & "\"
oShellLink.Save


Tu modifies les variables :
oShellLink.TargetPath -> cible de ton lien
oShellLink.WorkingDirectory -> répertoire de travail

 

Tu peux même personnalisé l'icônes et le descriptif du raccourci en mettant avant oShellLink.Save :
oShellLink.IconLocation = "C:\chemin_vers\icone.exe_ou.dll, 0"
oShellLink.Description = "Description du raccourci"

 

L'option la plus simple après n'est pas de créer l'icône sur le profil de l'utilisateur, mais dans celui de tous les utilisateurs [:spamatounet]


Message édité par bardiel le 11-07-2015 à 12:00:57

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 13-07-2015 à 14:33:34    

Merci de votre aide !
 
Je n'arrive pas à faire fonctionner vos 2 codes
 
J'ai bien d'autres codes qui fonctionnent c'est à priori pas le PC.
 
Je veux bien votre 3 ème solution pour copier le raccourci sous chaque session d'utilisateur  
 
Voilà comment je l'ai modifié avec les chemins d'accès des fois que j'ai fais des erreurs
 (j’ais aussi testé des variantes sans succès) :
 

' copie du raccourci sur le bureau :
 
Dim Shell, DesktopPath, strSessionName, oShellLink
Set Shell = CreateObject("WScript.Shell" )
strSessionName = WshShell.ExpandEnvironmentStrings("%SESSIONNAME%" )
DesktopPath = Shell.SpecialFolders("Desktop" )
set oShellLink = Shell.CreateShortcut(DesktopPath & "\Vidéos.lnk" )
oShellLink.WindowStyle = 1
 
oShellLink.TargetPath = "C:\Users\" & strSessionName & "\Desktop"
'destination dossier "Bureau" pour création du raccourci  
 
oShellLink.WorkingDirectory = "C:\Users\Utilisateur\Downloads\Videos\in\home_shortcut\a.txt"      
' source dossier "home_shortcut" du fichier
 
oShellLink.Save


 
Merci d'avance
 

Reply

Marsh Posté le 16-07-2015 à 15:33:35    

Ah oui tiens, étonnant ce léger bug avec la variable d'environnement %SESSIONNAME% chez moi aussi, ça renvoie "console" au lieu de mon user :o
Donc version corrigée (testé sous Vista Pro 32bits et Windows 7 Pro 32 et 64bits) :


' definition des variables
Dim Shell, DesktopPath, strSessionName, oShellLink, wshnetwork
' creation des objets pour la manipulation du shell
Set Shell = CreateObject("WScript.Shell" )
' creation et recuperation du user courant
set wshnetwork = WScript.CreateObject("WScript.NetWork" )
strSessionName = wshnetwork.UserName
' definition de l emplacement du dossier du bureau
DesktopPath = Shell.SpecialFolders("Desktop" )
' creation du raccourci
set oShellLink = Shell.CreateShortcut(DesktopPath & "\Vidéos.lnk" )
' style du raccourci en normal : Windows garde en memoire la taille et l emplacement de la fenetre
oShellLink.WindowStyle = 1
' definition du lien
oShellLink.TargetPath = "C:\Users\" & strSessionName & "\"
' definition du dossier de travail
oShellLink.WorkingDirectory = "C:\Users\" & strSessionName & "\"
' creation du raccourci suivant ce qui a ete indique auparavant
oShellLink.Save


Message édité par bardiel le 16-07-2015 à 15:35:02

---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 28-07-2015 à 23:55:14    

Ça fonctionne super bien ! Merci pour tout, les détails sont parfaits ! :)


---------------
à cœur vaillant rien d’impossible
Reply

Sujets relatifs:

Leave a Replay

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