Einführung
Windows 2000 und höher unterstützt symbolische Verzeichnisverknüpfungen, wobei ein Verzeichnis als symbolische Verknüpfung zu einem anderen Verzeichnis auf dem Computer dient. Wenn das Verzeichnis D: \ SYMLINK beispielsweise C: \ WINNT \ SYSTEM32 als Ziel angibt, greift eine Anwendung, die auf D: \ SYMLINK \ DRIVERS zugreift, in Wirklichkeit auf C: \ WINNT \ SYSTEM32 \ DRIVERS zu. Verzeichnissymbolverknüpfungen werden in Windows als NTFS-Junctions bezeichnet. Leider wird Windows ohne Tools zum Erstellen von Junctions ausgeliefert. Sie müssen das Win2K Resource Kit erwerben, das mit dem Programm linkd zum Erstellen von Junctions geliefert wird. Ich habe mich daher entschlossen, mein eigenes Werkzeug zum Erstellen von Junctions zu schreiben: Junction. Mit Junction können Sie nicht nur NTFS-Junctions erstellen, sondern auch feststellen, ob es sich bei Dateien oder Verzeichnissen tatsächlich um Analysepunkte handelt. Analysepunkte sind der Mechanismus, auf dem NTFS-Junctions basieren.
In diesem Microsoft KB-Artikel finden Sie Tipps zur Verwendung von Junctions.
Beachten Sie, dass Windows keine Junctions zu Verzeichnissen auf Remotefreigaben unterstützt.
Wenn Sie die Analyseinformationen anzeigen möchten, wird für Junction Folgendes verwendet:
Junction verwenden
Verwenden Sie Junction, um Junctions aufzulisten:
Verwendung: [-s]
-s Recurse-Unterverzeichnisse
Beispiele:
Geben Sie den Dateinamen an, um festzustellen, ob es sich bei einer Datei um eine Junction handelt:
Kreuzung c: \ test
Um Junctions unter einem Verzeichnis aufzulisten, geben Sie den Schalter –s ein:
Kreuzung -sc: \
So erstellen Sie eine Junction c: \ Programme für "c: \ Programme":
C:> md Program-Files
C:> Junction c: \ Programme "c: \ Programme"
Verwenden Sie den Schalter –d, um eine Junction zu löschen:
Junction -dc: \ Programme
Sie müssen nicht unbedingt zusätzliche Programme herunterladen, um Junctions, Symlinks und Hardlinks aufzulisten. Wenn Sie jedoch bestimmte Anforderungen an das Ausgabeformat haben, können diese hilfreich sein.
Listen Sie alle Junctions, Symlinks und Symlink-Verzeichnisse im aktuellen Verzeichnis und seinen Unterverzeichnissen auf:
Oder wenn Sie möchten, dass sie separat aufgeführt werden ...
Listen Sie alle Junctions im aktuellen Verzeichnis und seinen Unterverzeichnissen auf:
Listen Sie alle Symlinks im aktuellen Verzeichnis und seinen Unterverzeichnissen auf:
Listen Sie alle Symlink-Verzeichnisse im aktuellen Verzeichnis und seinen Unterverzeichnissen auf:
Das
l
Attribut-Flag ist hier der Schlüssel.l
ist fürReparse Points
(Junctions, Symlinks und Symlink-Verzeichnisse)Harte Verbindungen
dir
Listet Hardlinks leider als normale Dateien auf, sodass Sie sie nicht zur Identifizierung von Hardlinks verwenden können. Sie könnenfsutil
stattdessen den eingebauten verwenden. Es muss an einer Eingabeaufforderung mit erhöhten Rechten ausgeführt werden.Mit
fsutil
allen Hard - Links im aktuellen Verzeichnis und dessen Unterverzeichnissen, die Liste:Dieser Einzeiler ist nicht ideal und ich würde Verbesserungen begrüßen.
forfiles
(/s
) mit der Option "recurse subdirectories" schlug auf meine CPU ein und es dauerte eine Weile, bis der Vorgang abgeschlossen war.fsutil
endet im Grunde zweimal ausgeführt; Das erste Mal, um die Hardlinks durch Zählen der Anzahl der von jedem Aufruf zurückgegebenen Ausgabezeilen zu identifizieren, und das zweite Mal, um bei gerade gefundenen Hardlinks die Ausgabe richtig zu machen.uniq
.Hier ist eine Batch-Datei, die nur
for
zum Identifizieren von Hardlinks verwendet wird. Daforfiles
es nicht involviert ist, kann es etwas schneller sein, es leidet jedoch immer noch an den verbleibenden Vorbehalten des obigen Einzeilers.Es gibt einige andere (nicht getestete) Optionen:
Verwenden Sie das (alte) Microsoft HL Scan- Dienstprogramm
Verwenden Sie den alternativen Befehl find , der mit dem SFUA-Dienstprogramm-Toolkit von Microsoft geliefert wird:
Verwenden Sie das Dienstprogramm findlinks von Sysinternals auf ähnliche Weise wie
fsutil
oben beschriebenVerwenden Sie das ListLinks- Programm von Uwe Sieber - siehe Link für die Verwendung
Verwenden Sie NTFSLinksView von Nirsoft, wenn Sie eine GUI-Anwendung bevorzugen
quelle
Ab Powershell 5+ listet der folgende Einzeiler rekursiv alle Datei-Hardlinks, Verzeichnisknoten und symbolischen Links sowie deren Ziele auf, beginnend mit
d:\Temp\
:Ausgabe:
Wenn Sie mehrere Ziele für Hardlinks bevorzugen, verwenden Sie diese Variante, in der die Ziele durch Tabulatoren getrennt aufgeführt sind:
Möglicherweise benötigen Sie Administratorrechte, um dieses Skript auszuführen
C:\
.So führen Sie diese Skripte über die herkömmliche Befehlszeile (cmd.exe) aus:
Zum Beispiel:
quelle
dir 'd:\Temp' -recurse -force | ?{$_.LinkType -eq "Junction"} | select FullName,LinkType,Target
LinkType
scheint für Analysepunkte nicht zuverlässig zu sein. Zum Beispiel auf meinem Computer läuft W10 mit PS 5.1,LinkType
ist null für beide „C: \ Programdata \ Desktop“ und „C: \ Users \ All Users“, währenddir /aL
(Eingabeaufforderung, nicht Powershell) zeigt die ersten ein Verbindungspunkt ist und der zweite eine symbolische Verbindung.Harte Links werden wie oben beschrieben besser beschrieben, aber für symbolische Links und Junctions funktioniert Folgendes gut:
Ich verwende hier keine neuen Befehle, jedoch werden einige der aufgelisteten Befehle verbessert, indem eine schöne Liste aller gefundenen Links angezeigt wird, und zwar im Pfad, im Typ (SymLink / Junction) und sowohl im Linkpfad als auch im Zielpfad.
Es gibt einige gute oben, aber sie geben nur den ZIEL-Pfad an, und normalerweise möchten Sie den Link und nicht das Ziel löschen oder alle Links und Ziele korrelieren.
Um den Typ, den Link und das Ziel zu erhalten, können Sie in CMD Folgendes verwenden:
Beispielausgabe:
quelle
Far Manager 3.0 kann Symlinks und Knotenpunkte suchen und anzeigen, die sich von Dateien und Verzeichnissen unterscheiden. (Es kann so viele andere Dinge tun.) Es kann auch nach harten Links suchen.
ALT+ F7=> [x] Verwende filter => Filt er =>Ins
Wählen Sie die gewünschten Attribute.
quelle
LinkMagic2.exe (Junction List Magic) ist auch gut.
Ich habe versehentlich alle meine
c:\user
Junction-Links, wie Druck-, Netzwerk- und Anwendungsdaten, gelöscht, als ich Windows 7 vor 2 Jahren zum ersten Mal installiert habe, weil ich dachte, sie wurden bei der Installation versehentlich dort abgelegt. Was sie wirklich sind, ist die Abwärtskompatibilität, und während ich im Internet suche, stoßen einige auf Probleme, wenn sie versuchen, bestimmte Dinge ohne diese Knotenpunkte zu tun.quelle