Aide programme VB -> extraction liens icônes
5 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
Aide programme VB -> extraction liens icônes
Je ne sais pas si je suis dans la bonne section mais j'aurais besoin d'un petit coup de pouce si il y a des as de la programmation ici.
On m'a demandé au taf de trouver un moyen d'extraire tous les raccourcis (fichiers .lnk) se trouvant dans des arborescences et sous arbo donnés qui pointent vers des bases de données .mde et .mdb et de les mettre dans un fichier au format csv en indiquant l’emplacement et le nom du raccourci ; la propriété du raccourci qui indique ce qu’il exécute.
J'ai trouvé ça sur le net:
Merci d'avance.
On m'a demandé au taf de trouver un moyen d'extraire tous les raccourcis (fichiers .lnk) se trouvant dans des arborescences et sous arbo donnés qui pointent vers des bases de données .mde et .mdb et de les mettre dans un fichier au format csv en indiquant l’emplacement et le nom du raccourci ; la propriété du raccourci qui indique ce qu’il exécute.
J'ai trouvé ça sur le net:
Set objShell = WScript.CreateObject("WScript.Shell" )
Path1 = objShell.SpecialFolders.Item("AllUsersDesktop" )
' Wscript.Echo "AllUsersDesktop:" & Path1
Set fso = CreateObject("Scripting.FileSystemObject" )
Set f = fso.GetFolder(Path1)
Set fc = f.Files
For Each f1 in fc
If (fso.GetExtensionName(f1) = "lnk" ) Then
Set myShortcut = objShell.CreateShortcut(f1.path)
WScript.Echo f1.name & "-->" & myShortcut.TargetPath
End If
Next
Path1 = objShell.SpecialFolders.Item("Desktop" )
'Wscript.Echo "Desktop:" & Path1
Set f = fso.GetFolder(Path1)
Set fc = f.Files
For Each f1 in fc
If (fso.GetExtensionName(f1) = "lnk" ) Then
Set myShortcut = objShell.CreateShortcut(f1.path)
WScript.Echo f1.name & "-->" & myShortcut.TargetPath
End If
Next
Merci d'avance.
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
Tu t'y connais ou pas en vbs ? C'est juste pour savoir s'il faut te donner une réponse détaillée ou non
Il faut lister tous les raccourcis du poste, seulement ceux d'un lecteur ou bien seulement ceux sur les bureaux des users ?
Il faut lister tous les raccourcis du poste, seulement ceux d'un lecteur ou bien seulement ceux sur les bureaux des users ?
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Je m'y connais un peu oui mais ça fait (trop) longtemps que j'ai pas développé. Pour répondre à ta question je dois lister les fichiers lnk de répertoires et de ses sous répertoires se trouvant sur des lecteurs réseaux (je sais faire ça en ligne de commande par contre mais ça me servira pas à grand chose pour la suite...)
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
meme en ligne de commande ça peut marche pour creer le csv aussi
Re: Aide programme VB -> extraction liens icônes
+1 Avec monster.
EDIT : Comment "formater" ton CSV ?
Emplacement, Nom, Cible ?
C'est quoi ça ? Le paramètre passé au script ? Ex : "C:\MonProgramme.Exe MonParamètre1 MonParamètre2".la propriété du raccourci qui indique ce qu’il exécute
EDIT : Comment "formater" ton CSV ?
Emplacement, Nom, Cible ?
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Petit détail qui a son importance ...
Pour répondre à ton problème, j'utilise WMI et Win32_ShortcutFile (c'est plus pratique pour avoir la cible ... ) et avec WMI, tu sélectionnes un ordinateur : "." pour celui sur lequel s'exécute le script, sinon, il faut stipuler le nom ... Cela veut dire que si tu dois rechercher sur 10 machines, ça va être un peu le bordel (même si une boucle et un tableau simplifieront le tout ...).
Sinon, ton CSV il faut l'enregistrer où ? Ca t'irais s'il s'enregistre là ou s'exécute le script ?
Pour répondre à ton problème, j'utilise WMI et Win32_ShortcutFile (c'est plus pratique pour avoir la cible ... ) et avec WMI, tu sélectionnes un ordinateur : "." pour celui sur lequel s'exécute le script, sinon, il faut stipuler le nom ... Cela veut dire que si tu dois rechercher sur 10 machines, ça va être un peu le bordel (même si une boucle et un tableau simplifieront le tout ...).
Sinon, ton CSV il faut l'enregistrer où ? Ca t'irais s'il s'enregistre là ou s'exécute le script ?
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
yavka a écrit:+1 Avec monster.C'est quoi ça ? Le paramètre passé au script ? Ex : "C:\MonProgramme.Exe MonParamètre1 MonParamètre2".la propriété du raccourci qui indique ce qu’il exécute
EDIT : Comment "formater" ton CSV ?
Emplacement, Nom, Cible ?
Oui c'est parfait ça
yavka a écrit:Petit détail qui a son importance ...
Pour répondre à ton problème, j'utilise WMI et Win32_ShortcutFile (c'est plus pratique pour avoir la cible ... Smile ) et avec WMI, tu sélectionnes un ordinateur : "." pour celui sur lequel s'exécute le script, sinon, il faut stipuler le nom ... Cela veut dire que si tu dois rechercher sur 10 machines, ça va être un peu le bordel (même si une boucle et un tableau simplifieront le tout ...).
Sinon, ton CSV il faut l'enregistrer où ? Ca t'irais s'il s'enregistre là ou s'exécute le script ?
Je vais l'exécuter sur un ordinateur où les montages réseaux seront présents (3 pour être exact: P,Q et un autre M par exemple). Et oui très bien le résultat dans le même répertoire où est exécuté le programme
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
Chuis pas très clair moi encore
Win32_ShortcutFile permet de connaitre certaines propriétés d'un raccourci : Nom, Emplacement, Cible.
Le problème, c'est qu'un emplacement est forcément sur un disque local. Cela n'empêche pas de se "connecter" avec WMI à d'autres ordinateurs que le sien, par contre, un emplacement sera forcément local au pc examiné.
Exemple : Tu as un lecteur réseau "X:\" qui pointe vers "\\OrdinateurDistant\Partage" ou "Partage" correspond au dossier "J:\Partage" de "OrdinateurDistant". Et bien l'emplacement d'un raccourci dans ce dossier sera "J:\Partage\Raccourci.Lnk" et non pas "X:\Raccourci.Lnk"
Je ne connais pas autre chose que Win32_ShortcutFile pour trouver la cible d'un raccourci
Win32_ShortcutFile permet de connaitre certaines propriétés d'un raccourci : Nom, Emplacement, Cible.
Le problème, c'est qu'un emplacement est forcément sur un disque local. Cela n'empêche pas de se "connecter" avec WMI à d'autres ordinateurs que le sien, par contre, un emplacement sera forcément local au pc examiné.
Exemple : Tu as un lecteur réseau "X:\" qui pointe vers "\\OrdinateurDistant\Partage" ou "Partage" correspond au dossier "J:\Partage" de "OrdinateurDistant". Et bien l'emplacement d'un raccourci dans ce dossier sera "J:\Partage\Raccourci.Lnk" et non pas "X:\Raccourci.Lnk"
Je ne connais pas autre chose que Win32_ShortcutFile pour trouver la cible d'un raccourci
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Si la difficulté est seulement l'emplacement local alors dans ce cas laisses tomber les lecteurs réseaux, chemins UNC etc... j'exécuterais directement le prog en local sur le serveur qui fait ce partage
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
Voilà donc, brut de fonderie (Sans explication à l'intérieur), le script que je te propose de lancer depuis n'importe quel PC. Attention, remplace dans la première ligne la chaine "PC_A_Examiner" par le nom du pc. Il faut absolument mettre entre guillemet. Le nom du CSV est identique au VBS (sauf l'extension ). S'il en existe déjà un, il le renomme en .SAV et en cré un nouveau.
Le script s'arrête en cas d'erreur (Absence de la mention On Error Resume Next). Si tu as un message avec la ligne "Erreur : Permission refusée" c'est soit parceque le script est déjà en cours d'exécution, soit parceque le CSV est déjà ouvert.
Le script s'arrête en cas d'erreur (Absence de la mention On Error Resume Next). Si tu as un message avec la ligne "Erreur : Permission refusée" c'est soit parceque le script est déjà en cours d'exécution, soit parceque le CSV est déjà ouvert.
- Code:
strComputer = "PC_A_Examiner"
Set Fso = CreateObject("scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ShortcutFile")
FichierCsv = Fso.BuildPath (Fso.GetParentFolderName(Wscript.scriptFullName),Left (Wscript.scriptName, InStr(Wscript.scriptName, ".")-1)&".csv")
If Fso.FileExists(FichierCSV) Then
OldCsv = Left(FichierCSV, InStr(FichierCSV,".csv"))&"sav"
If Fso.FileExists(OldCsv) Then Fso.DeleteFile OldCsv
Fso.MoveFile FichierCSV, OldCsv
End If
Set FicSortie = Fso.OpenTextFile(FichierCSV, 2, True)
If Err.Number <> 0 Then Wscript.Quit
For Each objItem In colItems
If Ucase(Right (objItem.Target, 3)) = "MDB" OR Ucase(Right (objItem.Target, 3)) = "MDE" Then
WriteLine Left (objItem.Caption,2) & objItem.Path & ", " & objItem.FileName & ", " & objItem.Target, FicSortie
End If
Next
MsgBox "Traitement terminé."
Function WriteLine(ByVal strMessage, ByVal objFile)
On Error Resume Next
If IsObject(objFile) then
objFile.WriteLine strMessage
Else
Call Wscript.Echo("Impossible de loguer : " & strMessage )
End If
End Function
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
ouah super merci, j'essaierais ça demain et je te dirais ce que ça donne
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
Oki ! Au fait, chuis en vacances depuis 17h, je surferais peut-être moins les jours prochain. Je garde ma fille
J'ai oublié de préciser que quand le script est terminé, il y a un message à l'écran
J'ai oublié de préciser que quand le script est terminé, il y a un message à l'écran
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Bon voici les nouvelles. Çà fonctionne mais j'ai un message d'erreur sur un des serveurs où j'exécute le script:
Que faire
Que faire
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
c'est un problème de communication sur le réseau visiblement
Remuald- Coadmin
- Nombre de messages : 31630
Localisation : anywhere
Re: Aide programme VB -> extraction liens icônes
Bah non je l'exécute en local puis ça bloque toujours à la même ligne dans le fichier Excel qui se construit bien. J'ai comme l'impression qu'il y a un caractère spécial rencontré par exemple qui met la grouille ou alors c'est un problème de droits d'accès à un moment donné !
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
ça correspond à cette ligne là d'après l'erreur :
- Code:
(objItem.Target, 3)) = "MDE" Then
Remuald- Coadmin
- Nombre de messages : 31630
Localisation : anywhere
Re: Aide programme VB -> extraction liens icônes
Non, en fait la ligne 21, c'est la fin de la boucle qui liste les propriétés de chaque raccourcis (Next) (Si tu as bien conservé les lignes blanches, parceque comme j'indente le texte, il n'y a rien normalement qui commence au caractère 7 mais que au 0,5,10 etc.).
En dessous de la ligne " For Each objItem In colItems" ajoute un
On Error Resume Next afin que le script continu même en cas d'erreur dans la boucle. Si tu as toujours l'erreur, ajoute la ligne en tout début de script.
Si tu le lance sur chacun des serveurs, à ce moment là, tu peux mettre strComputer = "." en première ligne. Sinon, si tu dois le faire sur de nombreux serveur, on peut modifier le script pour indiquer tous les serveurs et analyser chacun. Par contre, dans le CSV, il faudra ajouter une ligne à chaque fois que l'on passera d'un serveur à l'autre.
Sinon, une erreur sur le RPC c'est un peu louche ... tu ne serais pas sur un contrôleur de domaine
Dernier point : si on ne s'arrête plus sur erreur, peut être que la liste des raccourcis ne sera pas exhaustive
P.S. : on utilise aussi le RPC pour se connecter à soi même si je ne me trompe pas
En dessous de la ligne " For Each objItem In colItems" ajoute un
On Error Resume Next afin que le script continu même en cas d'erreur dans la boucle. Si tu as toujours l'erreur, ajoute la ligne en tout début de script.
Si tu le lance sur chacun des serveurs, à ce moment là, tu peux mettre strComputer = "." en première ligne. Sinon, si tu dois le faire sur de nombreux serveur, on peut modifier le script pour indiquer tous les serveurs et analyser chacun. Par contre, dans le CSV, il faudra ajouter une ligne à chaque fois que l'on passera d'un serveur à l'autre.
Sinon, une erreur sur le RPC c'est un peu louche ... tu ne serais pas sur un contrôleur de domaine
Dernier point : si on ne s'arrête plus sur erreur, peut être que la liste des raccourcis ne sera pas exhaustive
P.S. : on utilise aussi le RPC pour se connecter à soi même si je ne me trompe pas
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Merci beaucoup pour tout ça yavka et non je ne suis pas sur un Contrôleur de domaine
Par contre je t'en devrais une pour le service rendu
Par contre je t'en devrais une pour le service rendu
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
Bon et bien c'est pas mieux. Du coup plus de message d'erreur mais il me dit "Traitement terminé" alors qu'il a pas fini en fait
Je pense qu'il faudrait rajouter un fichier de log au format texte qui recense tous les fichiers lnk scannés. Cela me permettrait peut-être de voir ce qui bloque...
Je pense qu'il faudrait rajouter un fichier de log au format texte qui recense tous les fichiers lnk scannés. Cela me permettrait peut-être de voir ce qui bloque...
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Re: Aide programme VB -> extraction liens icônes
- Code:
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ShortcutFile")
..........
If Ucase(Right (objItem.Target, 3)) = "MDB" OR Ucase(Right (objItem.Target, 3)) = "MDE" Then
Bonjour,
Ce script ne cherche que les fichiers de type .lnk qui contiennent MDB et MDE dans le nom. Si tu as des fichiers .lnk qui pointent vers une base mais dont le nom n'est pas *MDB ou *MDE, il ne les trouvera pas, ainsi que ceux qui se trouvent dans le répertoire ou tu lances le script.
Re: Aide programme VB -> extraction liens icônes
Bonjour zekroustibat,
Voui (Win32_ShortcutFile) !zekroustibat a écrit:Ce script ne cherche que les fichiers de type .lnk
Pas tout à fait. Dont la cible (objItem.Target) contient MDB ou MDE.zekroustibat a écrit:qui contiennent MDB et MDE dans le nom
bah euh ... on n'en veut paszekroustibat a écrit:Si tu as des fichiers .lnk qui pointent vers une base mais dont le nom n'est pas *MDB ou *MDE, il ne les trouvera pas
Ah bon ? Perso, j'ai créé un fichier texte vide et j'ai mis l'extension "mdb". Clic droit dessus puis créer un raccourci et enfin je lance le script (dans le même dossier) : ca fonctionne !zekroustibat a écrit:ainsi que ceux qui se trouvent dans le répertoire ou tu lances le script.
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
Pour ne pas trop toucher au script, il suffit de supprimer les lignes 18 et 20 :robin44 a écrit:Je pense qu'il faudrait rajouter un fichier de log au format texte qui recense tous les fichiers lnk scannés. Cela me permettrait peut-être de voir ce qui bloque...
- Code:
If Ucase(Right (objItem.Target, 3)) = "MDB" OR Ucase(Right (objItem.Target, 3)) = "MDE" Then
- Code:
End If
Si ca "déconne" trop, je peux en faire un plus complexe mais ca attendra Lundi parceque là veille de fêtes ça va pas être facile
As tu redémarrer ce serveur récemment ? (Sans doute que oui puisque c'est un Windows ) Il est sous quel version d'OS ?
yavka- NHFR member
- Nombre de messages : 1023
Localisation : Nantes
Re: Aide programme VB -> extraction liens icônes
zekroustibat a écrit:Si tu as des fichiers .lnk qui pointent vers une base mais dont le nom n'est pas *MDB ou *MDE, il ne les trouvera pas
- Code:
bah euh ... on n'en veut pas :confused:
- Code:
On m'a demandé au taf de trouver un moyen d'extraire tous les raccourcis (fichiers .lnk) se trouvant dans des arborescences et sous arbo donnés qui pointent vers des bases de données .mde et .mdb
Bin si il les veut.
objItem.Target n'a pas l'air de fonctionner pour tous les liens....
zekroustibat a écrit:ainsi que ceux qui se trouvent dans le répertoire ou tu lances le script.
- Code:
Ah bon ? Perso, j'ai créé un fichier texte vide et j'ai mis l'extension "mdb". Clic droit dessus puis créer un raccourci et enfin je lance le script (dans le même dossier) : ca fonctionne !
Re: Aide programme VB -> extraction liens icônes
Hey les gars ne vous prenez pas trop la tête pour moi hein puis pas e problèmes ça attendra le 5 Janvier puisque demain-midi je suis en congés
robin44- Modérateur
- Nombre de messages : 6577
Localisation : Missillac
Page 1 sur 2 • 1, 2
Sujets similaires
» Programme de test de pixels morts
» [AIDE] NOS déplacements - Service d'aide aux livraisons
» Vitesse d'extraction audio
» [Pret] 4 Clés d'extraction autoradio Audi VW etc....
» J'AI RETROUVé !!!Je ne trouve plus le nom d'un programme :'(
» [AIDE] NOS déplacements - Service d'aide aux livraisons
» Vitesse d'extraction audio
» [Pret] 4 Clés d'extraction autoradio Audi VW etc....
» J'AI RETROUVé !!!Je ne trouve plus le nom d'un programme :'(
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum