Jak mogę znaleźć wszystkie dowiązania symboliczne w systemie Windows Vista lub 7?

10

Szukam sposobu wyszukiwania wszystkich dowiązań symbolicznych w systemie plików NTFS w systemie Windows Vista lub 7.

Byłoby jeszcze lepiej, gdybym mógł określić konkretny cel, aby sprawdzić, czy ma do niego jakieś dowiązania symboliczne, ale sposób na ich wyszukanie również byłby świetny.

wojo
źródło

Odpowiedzi:

15

Oto najlepszy sposób, jaki do tej pory znalazłem:

dir /a:l /s

Ale to brzydkie. Wolę listę, która pokazuje jeden plik w wierszu w formacie target => source lub coś podobnego. Grepping dla SYMLINK nie działa dobrze z powodu formatu wieloliniowego. Przełącznik / B bare nie podaje nic oprócz docelowej nazwy pliku.

Zauważ, że grep jest narzędziem wielowierszowym. Możesz użyć -an, aby uchwycić zarówno poprzednią, jak i następną n linii, oraz -An, aby tylko chwycić następną n linii. Na przykład grep -A10 config przechwyciłby następne dziesięć wierszy po znalezieniu słowa „config”. Jeśli miałeś 2 instancje tego słowa, skonfiguruj 3 linie od siebie, to skończyłbyś w sumie 14 liniami.

wojo
źródło
5

Ponieważ wyszukiwanie wszystkiego zostało przepisane (styczeń 2013 r.), Możesz teraz wyszukiwać atrybuty. Zapytanie „ attrib: L ” ujawni wszystkie dowiązania symboliczne różnych typów na twoim komputerze. Pokaż kolumnę Atrybuty (Ctrl + Shift + 8), aby posortować według atrybutu.

Możesz także utworzyć Filtr dla tego konkretnego wyszukiwania atrybutów (Wyszukaj, Dodaj do filtrów), jeśli często przeprowadzasz ten typ wyszukiwania lub chcesz przypisać skrót klawiaturowy.

Zauważyłem początkowy atrybut: wyszukiwanie wydawało się blokować wszystko tymczasowo, ale zakończyło się po kilku sekundach ... warte małego oczekiwania na tak potężne narzędzie.

BJordan
źródło
2

Wypróbuj SageLinks - małe bezpłatne narzędzie typu open source dla systemu Windows, które może znaleźć i ponownie sprawdzić wszystkie dowiązania symboliczne, a także połączenia i skróty:

Zrzut ekranu SageLinks

Nikołaj Raspopow
źródło
Czy możesz dodać jakieś informacje o linku, a nie tylko zdjęcie? Koszt, jak to znalazłeś, czy jesteś z nim powiązany itp.?
Kanadyjczyk Łukasz
To jest link do strony GitHub z darmowym narzędziem open source, które znajduje (i sprawdza poprawność) wszystkie dowiązania symboliczne w systemie Windows XP lub nowszym, zgodnie z pytaniem w tym pytaniu.
Nikolay Raspopov
Wspaniale, czy możesz edytować, aby dodać to do swojej odpowiedzi? Pomaga przyszłym odwiedzającym szybciej dowiedzieć się, czy to dobra odpowiedź
Kanadyjczyk Łukasz
Ładnie i szybko. Ale twarde linki NTFS, takie jak c: / a // b, działają dobrze w win7; podczas gdy sagelink oznaczy je jako nieprawidłowe. Win7 pozwala zarówno na ukośniki, odwrotne ukośniki, dodatkowe ukośniki.
mosh
Nie dozwolony. Opisz proszę, w jaki sposób stworzyłeś takie linki?
Nikolay Raspopov
2

Możesz wypróbować bezpłatne narzędzie Junction by SysInternals

Aby wyszukać wszystkie dowiązania symboliczne na dysku, przejdź do katalogu głównego i wpisz:

C:\> junction -s -q

-s przechodzi przez wszystkie podkatalogi

-q ignoruje błędy takie jak „Odmowa dostępu”.

To da ci wszystkie punkty ponownej analizy, z których obecnie korzysta Windows.

Jeśli chcesz ustalić, czy określony plik lub folder jest punktem ponownej analizy, po prostu wpisz nazwę narzędzia i nazwę pliku / folderu po. Uważaj na nazwy folderów, ponieważ dodanie odwrotnego ukośnika może zmienić wyniki.

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:\>
Słońce
źródło
0

Do wszystkich wyszukiwań plików w systemach Windows sugeruję użycie Everything . Jest bardzo szybki i bardzo lekki.


źródło
Wszystko jest schludne, ale wydaje się, że nie jest w stanie filtrować według punktów połączenia Windows, dowiązań symbolicznych itp.
wojo
0

Ja również szukałem tej możliwości i nie widziałem jej nigdzie indziej. Dodałem go do moich bibliotek Windows dla Pythona. Niestety, jeśli nie jesteś zapalonym programistą Python, masz kilka kroków, aby wszystko zainstalować.

  1. Pobierz Python 2.6.4 i zainstaluj go.
  2. Pobierz pakiet dystrybucyjny (część dystrybucji ) lub ez_setup (część setuptools ) i uruchom skrypt. Spowoduje to zainstalowanie jednego z dwóch menedżerów pakietów dla Pythona, które mój pakiet wymaga do uruchomienia.
  3. Użyj easy_install, aby zainstalować pakiet jaraco.windows i jego zależności. Z wiersza polecenia:

x

\Python26\scripts\easy_install jaraco.windows

Po wykonaniu tych kroków powinieneś mieć skrypt o nazwie \ python26 \ scripts \ find-symlinks.exe lub \ python26 \ scripts \ find-symlinks-script.py, który możesz wykonać z opcjonalną nazwą ścieżki do wyszukiwania dowiązań symbolicznych. Wyszuka dowiązania symboliczne i poda wyniki, po jednym wierszu. Przetestowałem tę procedurę w czystej instalacji systemu Windows 7.

> 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
źródło
0

Skrypt Cygwin / bash dla 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
źródło