Corriger récursivement la cible des raccourcis d'un répertoire

Contenu du snippet

Ce code utilise des objets fso et les collections associés
Il utilise aussi les moyens d'accès au contenu des raccourcis.

Source / Exemple :


' corrige récursivement la cible d'un ensemble des raccourcis contenu dans un repertoire

' Procédure récursive
Sub listingSousDossiersRecur(objListRep, cheminBranche)

	Set pFichier = oFSO.GetFolder(cheminBranche)
	Set cFichiers = pFichier.Files

	' Parcourt des fichiers du répertoire en cour
	For Each fichier in cFichiers
		
		' Test si le fichier est un racourcis avec son extension
		If Lcase(Right(Fichier.Name, 4)) = ".lnk" 	Then		
			set oShellLink = WshShell.CreateShortcut(Fichier.Path)

			oShellLink.TargetPath = Replace(oShellLink.TargetPath,"C:\Users\homedir\Documents\OpenOffice113\user\template","C:\Users\homedir\AppData\Roaming\OpenOffice.org\3\user\template")
						
			' # Débugage : A Commenter pour ne plus avoir de message lors du traitement final #
			' WScript.Echo Fichier.Path & chr(13) & oShellLink.TargetPath
			
			' # A commenter pour ne pas appliquer la correction aux raccourcis #
			oShellLink.Save
			
			' # Débugage : A décommenter si l'on ne veux boucler qu'une seule fois # 
			' wscript.quit
		end if
	Next

	' Listing des sous-dossiers + appel recursif
	For Each oSousRep In objListRep
		Set objListSousRep = oSousRep.SubFolders
		Call listingSousDossiersRecur(objListSousRep, cheminBranche & "\" & oSousRep.Name)
	Next

End Sub

' Creation du moyen d'accès au objet système de fichier de vb
Set oFSO = CreateObject("Scripting.FileSystemObject")

' déclaration du repertoire à traiter et création de son accès par l'objet oRepCourant
Set oRepCourant = oFSO.GetFolder("C:\Users\homedir\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\MyTools")

' Création de la collection (contenant l'ensemble les sous-dossiers du dossier courant)
Set oSousRep = oRepCourant.SubFolders

' Création du moyen d'accès aux objets shell(permettra la modification des raccourcis)
set WshShell = WScript.CreateObject("WScript.Shell")

' Appel d'une procédure recursive du traitement 
Call listingSousDossiersRecur(oSousRep, oRepCourant.Path)
WScript.Echo "Traitement des raccourcis du dossier " & oRepCourant.Path & " terminé"

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.