Anda tidak perlu mengunduh program tambahan untuk membuat daftar persimpangan, symlink, dan tautan keras, tetapi jika Anda memiliki persyaratan format output tertentu, mereka dapat membantu.
Daftar semua persimpangan, symlink dan direktori symlink di direktori saat ini dan subdirektori-nya:
dir /al /s
Atau jika Anda ingin mereka terdaftar secara terpisah ...
Daftar semua persimpangan di direktori saat ini dan subdirektori:
dir /al /s | findstr "<JUNCTION>"
Daftar semua symlink di direktori saat ini dan subdirektori-nya:
dir /al /s | findstr "<SYMLINK>"
Daftar semua direktori symlink di direktori saat ini dan subdirektori-nya:
dir /al /s | findstr "<SYMLINKD>"
The l
Atribut bendera adalah kunci di sini; l
adalah untuk Reparse Points
(persimpangan, symlink dan direktori symlink)
Tautan keras
Sayangnya dir
daftar tautan keras sebagai file normal, jadi Anda tidak dapat menggunakannya untuk mengidentifikasi tautan keras. Anda yang menggunakan inbuilt fsutil
sebagai gantinya. Itu perlu dijalankan dari prompt perintah yang ditinggikan.
Dengan fsutil
, daftarkan semua tautan keras di direktori saat ini dan subdirektori-nya:
for /F "usebackq tokens=2* delims=:" %G in (`forfiles /s /c "cmd /c fsutil hardlink list @path | findstr /n .* | findstr /b /v 1"`) do @fsutil hardlink list "%G" & echo.
One-liner ini tidak ideal, dan saya akan menyambut setiap perbaikan.
- Menggunakan
forfiles
dengan opsi subdirektori berulang ( /s
) memalu CPU saya, dan perlu waktu untuk menyelesaikannya.
- Pada
fsutil
dasarnya akhirnya berjalan dua kali; pertama kali mengidentifikasi tautan keras dengan menghitung jumlah jalur keluaran yang dihasilkan oleh setiap panggilan, dan yang kedua pada tautan keras yang baru saja ditemukan untuk mendapatkan hasil yang benar.
- Akan ada garis duplikat. Untuk menghilangkannya, Anda ingin mengarahkan output ke file dan kemudian jalankan file melalui alat seperti
uniq
.
Berikut adalah file batch yang digunakan hanya for
untuk mengidentifikasi tautan keras. Karena forfiles
tidak terlibat, mungkin sedikit lebih cepat, namun masih menderita peringatan tersisa dari satu-liner di atas.
@echo off
AT > NUL
if %ERRORLEVEL% NEQ 0 echo You need to run this script from an elevated command prompt. Exiting. && exit /B 1
for /R "%CD%" %%a IN (*.*) do (
for /F "usebackq tokens=2* delims=:" %%b in (`fsutil hardlink list "%%a" ^| findstr /n .* ^| findstr /b /v 1`) do (
fsutil hardlink list "%%b"
REM The following echo command breaks up each group of hard links with a blank line
echo.
)
)
Ada beberapa opsi lain (yang belum diuji):
Gunakan utilitas Microsoft HL Scan (lama)
hlscan /dir %CD%
Gunakan perintah cari alternatif yang datang dengan toolkit utilitas SFUA Microsoft:
find . -links +1
Gunakan utilitas findlink Sysinternals dengan cara yang mirip dengan yang fsutil
disebutkan di atas
Gunakan program ListLinks Uwe Sieber - lihat tautan untuk penggunaan
Gunakan Nirsoft's NTFSLinksView jika Anda lebih suka aplikasi GUI