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

supprimer des raccourcis ayant une cible communes

3 réponses
Avatar
Jean-Luc TUAL
Bonjour,

je voudrais faire un script pour
rechercher & supprimer des fichiers dans une arborescence les
raccourcis ( fichiers avec l'extension lnk)
dont la cible est un fichier ex=E9cutable pr=E9cis

exemple :comment rechercher & supprimer dont la cible est " c:\dossier
\prog.exe"

nom du raccourci : toto.lnk
nom du fichier cible : c:\dossier\prog.exe

nom du raccourci : titi.lnk
nom du fichier cible : c:\dossier\prog.exe

Merci de vos propositions

3 réponses

Avatar
Gilles LAURENT [MVP]
"Jean-Luc TUAL" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| je voudrais faire un script pour
| rechercher & supprimer des fichiers dans une arborescence les
| raccourcis ( fichiers avec l'extension lnk)
| dont la cible est un fichier exécutable précis
|
| exemple :comment rechercher & supprimer dont la cible est "
| c:dossier prog.exe"
|
| nom du raccourci : toto.lnk
| nom du fichier cible : c:dossierprog.exe
|
| nom du raccourci : titi.lnk
| nom du fichier cible : c:dossierprog.exe
|
| Merci de vos propositions

Ci-dessous le script batch DeleteShortcuts.cmd permettant de répondre à
votre besoin. Le script devra être déposé à la racine de l'arborescence
dans laquelle vous souhaitez supprimer les raccourcis. La recherche des
raccourcis se fera de manière récursive.

+++ Usage :
> DeleteShortcuts.cmd <target>

+++ Exemple :
> DeleteShortcuts.cmd "c:dossierprog.exe"

--- Coupez ici : DeleteShortcuts.cmd ---
@echo off
>%temp%lnk.vbs echo WScript.Echo "Shortcut :" ^& WScript.Arguments(0)
%temp%lnk.vbs echo Set oLnk=GetObject( _
%temp%lnk.vbs echo "winmgmts:/root/cimv2:Win32_ShortcutFile." ^& _
%temp%lnk.vbs echo "Name='" ^& WScript.Arguments(0) ^& "'")
%temp%lnk.vbs echo WScript.Echo "Target :" ^& oLnk.Target
%temp%lnk.vbs echo WScript.Quit( _
%temp%lnk.vbs echo LCase(oLnk.Target)=LCase(WScript.Arguments(1)))




for /f "tokens=*" %%i in ('dir /b /s *.lnk') do (
cscript //nologo %temp%lnk.vbs "%%i" "%1"
if not errorlevel 0 del /f "%%i" & echo *deleted*
echo.
)
del %temp%lnk.vbs
--- Coupez ici : DeleteShortcuts.cmd ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
moi
bonsoir,

Solution VBS classique ...

Bien sûr le traitement est récurssif
dans le répertoire à purger

' #####################################
' cible du raccourci :
CIBLE = "D:DossierTruc.exe"
' Répertoire à purger :
REPERTOIRE = "F:Utilisateux"

Set objShell = WScript.CreateObject( _
"WScript.Shell")
Set FSO = WScript.CreateObject(_
"Scripting.FileSystemObject")

Set BASE = FSO.GetFolder(REPERTOIRE)
Traite BASE
Set objShell = Nothing
Set FSO = Nothing
Wscript.Quit
' ===================================== Sub TRAITE(oDossier)
Dim Lien
If ODossier.Subfolders.Count > 0 Then
For Each SSD in oDossier.Subfolders
TRAITE SSD
Next
End If
If oDossier.Files.count > 0 Then
For Each FICH in oDossier.Files
If FICH.Type = "Raccourci" Then
Set Lien = objshell.CreateShortCut(Fich.Path)
If Lien.TargetPath = CIBLE Then
FSO.DeleteFile Fich.Path , True
End If
Set Lien = Nothing
End If
Next
End If

End Sub
' ======================================
Avatar
Gilles LAURENT [MVP]
"Jean-Luc TUAL" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

| je voudrais faire un script pour
| rechercher & supprimer des fichiers dans une arborescence les
| raccourcis ( fichiers avec l'extension lnk)
| dont la cible est un fichier exécutable précis
|
| exemple :comment rechercher & supprimer dont la cible est "
| c:dossier prog.exe"
|
| nom du raccourci : toto.lnk
| nom du fichier cible : c:dossierprog.exe
|
| nom du raccourci : titi.lnk
| nom du fichier cible : c:dossierprog.exe
|
| Merci de vos propositions

Et une autre version plus "classique" en VBScript / WMI.
La recherche est récursive.

+++ Usage
DeleteShortcuts.vbs <rootfolder> <target>

+++ Exemple
> cscript DeleteShortcuts.vbs "D:Test" "C:Dossierprog.exe"

--- Coupez ici : DeleteShortcuts.vbs ---
sFolder=Replace(WScript.Arguments(0), "", "")
sTarget=Replace(WScript.Arguments(1), "", "")
Set colLnk=GetObject("winmgmts:/root/cimv2").ExecQuery( _
"SELECT * FROM Win32_ShortcutFile " & _
"WHERE Target='" & sTarget & "' " & _
"AND Name LIKE '" & sFolder & "%'")
For Each oLnk In colLnk
oLnk.Delete()
WScript.Echo oLnk.Name & " [deleted]"
Next
--- Coupez ici : DeleteShortcuts.vbs ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr