Wie finde ich alle Symlinks in Windows Vista oder 7?

10

Ich suche nach einer Möglichkeit, nach allen symbolischen Links in einem NTFS-Dateisystem unter Windows Vista oder 7 zu suchen.

Es wäre sogar noch besser, wenn ich ein bestimmtes Ziel angeben könnte, um zu sehen, ob Symlinks darauf verweisen, aber eine Möglichkeit, nach allen zu suchen, wäre auch großartig.

wojo
quelle

Antworten:

15

Hier ist der beste Weg, den ich bisher gefunden habe:

dir /a:l /s

Aber es ist hässlich. Ich würde eine Auflistung bevorzugen, die eine Datei pro Zeile im Format target => source oder ähnlichem anzeigt. Grepping für SYMLINK funktioniert aufgrund des mehrzeiligen Formats nicht gut. Der Bare-Schalter / B gibt auch nur den Zieldateinamen an.

Beachten Sie, dass grep ein mehrzeiliges Werkzeug ist. Sie können -an verwenden, um sowohl die vorhergehenden als auch die nächsten n Zeilen zu erfassen, und -An, um nur die nächsten n Zeilen zu erfassen. Zum Beispiel würde grep -A10 configure die nächsten zehn Zeilen erfassen, nachdem das Wort "configure" gefunden wurde. Wenn Sie 2 Instanzen des Wortes hätten, die 3 Zeilen voneinander entfernt sind, würden Sie am Ende insgesamt 14 Zeilen erhalten.

wojo
quelle
5

Da die Suche " Alles" neu geschrieben wurde (Januar 2013), können Sie jetzt nach Attributen suchen. Eine Abfrage von „ attrib: L “ wird alle offenbare symbolischen Verknüpfungen verschiedenen Typen auf Ihrem Computer. Spalte Attribute anzeigen (Strg + Umschalt + 8) zum Sortieren nach Attributen.

Sie können auch einen Filter für diese bestimmte Attributsuche (Suchen, Zu Filtern hinzufügen) erstellen, wenn Sie diese Art der Suche häufig durchführen oder eine Tastenkombination zuweisen möchten.

Ich bemerkte das anfängliche Attribut: Die Suche schien alles vorübergehend zu blockieren , war aber nach ein paar Sekunden beendet ... das kleine Warten auf ein so mächtiges Werkzeug lohnt sich.

BJordan
quelle
2

Probieren Sie SageLinks aus - ein kleines Freeware-Open-Source-Dienstprogramm für Windows, mit dem alle Symlinks sowie Junctions und Verknüpfungen gefunden und erneut überprüft werden können:

SageLinks Screenshot

Nikolay Raspopov
quelle
Können Sie einige Informationen über den Link hinzufügen, anstatt nur ein Bild? Kosten, wie haben Sie es gefunden, sind Sie damit verbunden usw.?
Kanadier Luke
Dies ist ein Link zur GitHub-Seite mit dem Freeware-Open-Source-Dienstprogramm, das alle in dieser Frage gestellten Symlinks in Windows XP oder höher findet (und auf Gültigkeit überprüft).
Nikolay Raspopov
Genial, kannst du das bearbeiten , um es deiner Antwort hinzuzufügen? Es hilft zukünftigen Besuchern schneller zu wissen, ob es eine gute Antwort ist
Kanadier Luke
Schön und schnell. Aber NTFS-Hardlinks wie c: / a // b funktionieren in win7; während sagelink sie als ungültig kennzeichnet. Win7 erlaubt sowohl Schrägstriche als auch umgekehrte Schrägstriche und zusätzliche Schrägstriche.
Mosh
Nicht erlaubt. Beschreiben Sie bitte, wie Sie solche Links erstellt haben.
Nikolay Raspopov
2

Sie können das kostenlose Tool Junction by SysInternals ausprobieren

Um alle Symlinks auf einem Laufwerk zu durchsuchen, gehen Sie zum Stammverzeichnis und geben Sie Folgendes ein:

C:\> junction -s -q

-s durchläuft alle Unterverzeichnisse

-q ignoriert Fehler wie "Zugriff verweigert".

Dadurch erhalten Sie alle Analysepunkte, die Windows derzeit verwendet.

Wenn Sie feststellen möchten, ob eine bestimmte Datei oder ein bestimmter Ordner ein Analysepunkt ist, geben Sie einfach den Dienstprogrammnamen und den Datei- / Ordnernamen nach ein. Seien Sie vorsichtig mit Ordnernamen, da das Hinzufügen eines Backslashs die Ergebnisse verändern kann.

C:\> junction c:\apps

Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\apps: JUNCTION
   Substitute Name: e:\dropbox\apps

C:\>
Sonne
quelle
0

Für alle Dateisuchen auf Windows-Systemen empfehle ich die Verwendung von Everything . Es ist ultraschnell und sehr leicht.


quelle
Alles ist ordentlich, scheint aber nicht in der Lage zu sein, nach Windows-Verbindungspunkten, Symlinks usw. zu filtern
wojo
0

Auch ich habe nach dieser Fähigkeit gesucht und sie anderswo nicht gesehen. Ich habe es zu meinen Windows-Bibliotheken für Python hinzugefügt. Wenn Sie noch kein begeisterter Python-Programmierer sind, müssen Sie leider einige Schritte ausführen, um alles zu installieren.

  1. Laden Sie Python 2.6.4 herunter und installieren Sie es.
  2. Laden Sie Distribute-Setup (Teil von Distribute ) oder ez_setup (Teil von Setuptools ) herunter und führen Sie das Skript aus. Dadurch wird einer der beiden Paketmanager für Python installiert, die für die Ausführung meines Pakets erforderlich sind.
  3. Verwenden Sie easy_install, um das Paket jaraco.windows und seine Abhängigkeiten zu installieren . An der Eingabeaufforderung:

x

\Python26\scripts\easy_install jaraco.windows

Nachdem Sie diese Schritte ausgeführt haben, sollten Sie über ein Skript mit dem Namen \ python26 \ scripts \ find-symlinks.exe oder \ python26 \ scripts \ find-symlinks-script.py verfügen, das Sie mit einem optionalen Pfadnamen ausführen können, um nach Symlinks zu suchen. Es werden die Symlinks durchsucht und die Ergebnisse in jeweils einer Zeile angezeigt. Ich habe dieses Verfahren bei einer Neuinstallation von Windows 7 getestet.

> cmd /c mklink /d mylink \windows 
symbolic link created for mylink <<===>> \windows
> cmd /c mklink myfilelink \windows\notepad.exe
symbolic link created for myfilelink <<===>> \windows\notepad.exe

> \python26\scripts\find-symlinks
D .\mylink --> \windows
  .\myfilelink --> \windows\notepad.exe
Jason R. Coombs
quelle
0

Cygwin / Bash-Skript für win7

c:\> cat find-dead-links.sh
#!/usr/bin/bash
find . -maxdepth 3 -type l -print0 |
while IFS=   read -r -d $'\0' file ;do
  [[ -e "$file" ]] && continue
  echo "Bad link $file"
done 
mosh
quelle