Bạn không nhất thiết phải tải xuống các chương trình bổ sung để liệt kê các mối nối, liên kết tượng trưng và liên kết cứng, nhưng nếu bạn có các yêu cầu định dạng đầu ra cụ thể, chúng có thể giúp ích.
Liệt kê tất cả các mối nối, symlink và thư mục symlink trong thư mục hiện tại và các thư mục con của nó:
dir /al /s
Hoặc nếu bạn muốn chúng được liệt kê riêng ...
Liệt kê tất cả các mối nối trong thư mục hiện tại và các thư mục con của nó:
dir /al /s | findstr "<JUNCTION>"
Liệt kê tất cả các liên kết tượng trưng trong thư mục hiện tại và các thư mục con của nó:
dir /al /s | findstr "<SYMLINK>"
Liệt kê tất cả các thư mục symlink trong thư mục hiện tại và các thư mục con của nó:
dir /al /s | findstr "<SYMLINKD>"
Các l
cờ thuộc tính là chìa khóa ở đây; l
là cho Reparse Points
(nút giao, liên kết tượng trưng và thư mục symlink)
Liên kết cứng
không may dir
liệt kê các liên kết cứng như các tệp thông thường, vì vậy bạn không thể sử dụng nó để xác định các liên kết cứng. Bạn sử dụng sẵn có fsutil
thay thế. Nó cần phải được chạy từ một dấu nhắc lệnh nâng cao.
Với fsutil
, liệt kê tất cả các liên kết cứng trong thư mục hiện tại và các thư mục con của nó:
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.
Điều này không phải là lý tưởng, và tôi sẽ hoan nghênh mọi cải tiến.
- Sử dụng
forfiles
với tùy chọn thư mục con recurse ( /s
)
đập CPU của tôi và mất một lúc để hoàn thành.
- Các
fsutil
về cơ bản kết thúc chạy hai lần; lần đầu tiên
xác định các liên kết cứng bằng cách đếm số lượng đường đầu ra được trả về bởi mỗi cuộc gọi và lần thứ hai trên các liên kết cứng vừa tìm thấy để có đầu ra đúng.
- Sẽ có những dòng trùng lặp. Để loại bỏ chúng, bạn muốn chuyển hướng đầu ra sang một tệp và sau đó chạy tệp thông qua một công cụ như
uniq
.
Đây là một tệp bó chỉ sử dụng for
để xác định các liên kết cứng. Như forfiles
không liên quan, nó có thể nhanh hơn một chút, tuy nhiên nó vẫn phải chịu những cảnh báo còn lại của lớp lót trên.
@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.
)
)
Có một vài lựa chọn khác (chưa được kiểm tra):
Sử dụng Microsoft (cũ) Quét HL tiện ích
hlscan /dir %CD%
Sử dụng thay thế tìm thấy lệnh đi kèm với bộ công cụ tiện ích SFUA của Microsoft:
find . -links +1
Sử dụng Sysiternals ' tìm liên kết tiện ích theo cách tương tự như fsutil
đã đề cập ở trên
Sử dụng Uwe Sieber Danh sách liên kết chương trình - xem liên kết để sử dụng
Sử dụng Nirsoft NTFSLinksView nếu bạn thích một ứng dụng GUI