introduction
Windows 2000 et versions ultérieures prennent en charge les liens symboliques de répertoire, où un répertoire sert de lien symbolique vers un autre répertoire de l'ordinateur. Par exemple, si le répertoire D: \ SYMLINK spécifiait C: \ WINNT \ SYSTEM32 comme cible, une application accédant à D: \ SYMLINK \ DRIVERS accéderait en réalité à C: \ WINNT \ SYSTEM32 \ DRIVERS. Les liens symboliques d'annuaire sont appelés jonctions NTFS dans Windows. Malheureusement, Windows n'est livré avec aucun outil pour créer des jonctions - vous devez acheter le Kit de ressources Win2K, qui est fourni avec le programme linkd pour créer des jonctions. J'ai donc décidé d'écrire mon propre outil de création de jonction: Junction. La jonction vous permet non seulement de créer des jonctions NTFS, elle vous permet de voir si les fichiers ou les répertoires sont réellement des points d'analyse. Les points d’élimination sont le mécanisme sur lequel les jonctions NTFS sont basées,
Veuillez lire cet article Microsoft KB pour obtenir des conseils sur l'utilisation des jonctions.
Notez que Windows ne prend pas en charge les jonctions vers des répertoires sur des partages distants.
Si vous souhaitez afficher les informations d'analyse, l'utilisation de Junction est la suivante:
Utilisation de la jonction
Utilisez la jonction pour répertorier les jonctions:
Coutumes]
-s Sous-répertoires Recurse
Exemples:
Pour déterminer si un fichier est une jonction, spécifiez le nom du fichier:
jonction c: \ test
Pour répertorier les jonctions sous un répertoire, incluez le commutateur –s:
jonction -sc: \
Pour créer une jonction c: \ Program-Files pour "c: \ Program Files":
C:> md Program-Files
C:> jonction c: \ Program-Files "c: \ Program Files"
Pour supprimer une jonction, utilisez le commutateur –d:
junction -dc: \ Program-Files
Vous n'avez pas nécessairement besoin de télécharger des programmes supplémentaires pour répertorier les jonctions, les liens symboliques et les liens matériels, mais si vous avez des exigences de format de sortie spécifiques, ils peuvent vous aider.
Répertoriez toutes les jonctions, les liens symboliques et les répertoires de liens symboliques dans le répertoire actuel et ses sous-répertoires:
Ou si vous voulez qu'ils soient listés séparément ...
Liste toutes les jonctions dans le répertoire courant et ses sous-répertoires:
Liste tous les liens symboliques dans le répertoire courant et ses sous-répertoires:
Liste tous les répertoires de liens symboliques dans le répertoire courant et ses sous-répertoires:
Le
l
drapeau d'attribut est clé ici;l
est pourReparse Points
(jonctions, liens symboliques et répertoires de liens symboliques)Liens durs
Malheureusement,
dir
répertorie les liens durs en tant que fichiers normaux, vous ne pouvez donc pas les utiliser pour identifier les liens durs. Vous pouvez utiliser le intégré à lafsutil
place. Il doit être exécuté à partir d'une invite de commandes élevée.Avec
fsutil
, listez tous les liens durs dans le répertoire courant et ses sous-répertoires:Ce one-liner n'est pas idéal et j'accueillerais toute amélioration.
forfiles
de l'option (/s
) des sous-répertoires recurse a martelé mon processeur et a pris du temps.fsutil
principe finit par fonctionner deux fois; la première fois pour identifier les liaisons matérielles en comptant le nombre de lignes de sortie renvoyées par chaque appel, et la deuxième fois sur les liaisons matérielles qui viennent d'être trouvées pour obtenir la sortie correcte.uniq
.Voici un fichier batch qui utilise juste
for
pour identifier les liens durs. Comme ilforfiles
n'est pas impliqué, il peut être légèrement plus rapide, mais il souffre toujours des mises en garde restantes de la doublure ci-dessus.Il existe quelques autres options (non testées):
Utilisez l’ancien utilitaire Microsoft HL Scan
Utilisez la commande alternative find fournie avec la boîte à outils de l'utilitaire SFUA de Microsoft:
Utilisez l' utilitaire findlinks de Sysinternals d' une manière similaire à celle
fsutil
mentionnée ci-dessusUtilisez le programme ListLinks d' Uwe Sieber - voir le lien pour l'utilisation
Utilisez NTFSLinksView de Nirsoft si vous préférez une application graphique
la source
À partir de Powershell 5+, le one-liner suivant répertorie récursivement tous les liens physiques de fichiers, les jonctions de répertoires et les liens symboliques et leurs cibles à partir de
d:\Temp\
:Sortie:
Si vous vous souciez de plusieurs cibles pour les liens physiques, utilisez cette variante qui répertorie les cibles séparées par des tabulations:
Vous pouvez avoir besoin de privilèges d'administrateur pour exécuter ce script, disons
C:\
.Pour exécuter ces scripts à partir de la ligne de commande traditionnelle (cmd.exe):
Par exemple:
la source
dir 'd:\Temp' -recurse -force | ?{$_.LinkType -eq "Junction"} | select FullName,LinkType,Target
LinkType
ne semble pas fiable pour les points d'analyse. Par exemple, sur mon ordinateur exécutant W10 avec PS 5.1,LinkType
est nul pour "C: \ ProgramData \ Desktop" et "C: \ Users \ All Users", tandis quedir /aL
(Invite de commandes, pas PowerShell) indique que le premier est un point de jonction et le second un lien symbolique.Les liens matériels sont mieux décrits comme ci-dessus, mais pour les liens et jonctions symboliques, les éléments suivants fonctionnent bien:
Je n'utilise pas de nouvelles commandes ici, mais il améliore certaines répertoriées en vous montrant une belle liste de chaque lien trouvé, dans le chemin, son type (SymLink / Junction) et à la fois le chemin du lien et le chemin cible.
Il y en a de bons ci-dessus, mais ils ne vous donnent que le chemin TARGET, et généralement vous souhaitez supprimer le lien, et non la cible, ou corréler tous les liens et les cibles.
Pour obtenir le type, le lien et la cible, vous pouvez utiliser les éléments suivants dans CMD:
Exemple de sortie:
la source
Far Manager 3.0 peut à la fois rechercher et afficher des liens symboliques et des points de jonction différents des fichiers et des répertoires. (Il peut faire bien d'autres choses.) Il peut également rechercher des liens durs.
ALT+ F7=> [x] Utilisez filter => Filt er =>Ins
Choisissez les attributs que vous souhaitez.
la source
LinkMagic2.exe (magie de liste de jonction) est également bon.
J'ai supprimé par erreur tous mes
c:\user
liens Junction, tels que printhood, nethood et les données d'application lors de la première installation de Windows 7 il y a 2 ans, car je pensais qu'ils y avaient été placés par erreur lors de l'installation. Ce à quoi ils servent vraiment, c'est la rétrocompatibilité, et pendant la recherche sur Internet, je vois que certains ont eu des problèmes en essayant de faire certaines choses sans ces points de jonction.la source