जरूरी नहीं कि जंक्शनों, सिम्बल और हार्ड लिंक को सूचीबद्ध करने के लिए आपको अतिरिक्त प्रोग्राम डाउनलोड करने की आवश्यकता हो, लेकिन यदि आपके पास विशिष्ट आउटपुट स्वरूप की आवश्यकताएं हैं, तो वे मदद कर सकते हैं।
वर्तमान निर्देशिका और इसके उपनिर्देशिकाओं में सभी जंक्शनों, सहानुभूति और सिम्लिंक निर्देशिकाओं को सूचीबद्ध करें:
dir /al /s
या यदि आप उन्हें अलग से सूचीबद्ध करना चाहते हैं ...
वर्तमान निर्देशिका और उसके उपनिर्देशिकाओं में सभी जंक्शनों की सूची बनाएँ:
dir /al /s | findstr "<JUNCTION>"
वर्तमान निर्देशिका और उसके उपनिर्देशिकाओं में सभी सिम्बलिंक को सूचीबद्ध करें:
dir /al /s | findstr "<SYMLINK>"
वर्तमान निर्देशिका और इसकी उपनिर्देशिकाओं में सभी सिम्लिंक निर्देशिकाओं को सूचीबद्ध करें:
dir /al /s | findstr "<SYMLINKD>"
l
विशेषता ध्वज यहाँ कुंजी है; l
के लिए है Reparse Points
(जंक्शनों, सिमलिंक और सिम्लिंक निर्देशिका)
कड़ी कड़ी
दुर्भाग्य से dir
हार्ड लिंक को सामान्य फ़ाइलों के रूप में सूचीबद्ध करता है, इसलिए आप हार्ड लिंक की पहचान करने के लिए इसका उपयोग नहीं कर सकते। आप fsutil
इसके बजाय इनबिल्ट का उपयोग करें । इसे एक उन्नत कमांड प्रॉम्प्ट से चलाने की आवश्यकता है।
साथ fsutil
, वर्तमान निर्देशिका और उसकी उप में सभी हार्ड लिंक की सूची:
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.
यह एक-लाइनर आदर्श नहीं है, और मैं किसी भी सुधार का स्वागत करूंगा।
- का उपयोग करते हुए
forfiles
recurse उपनिर्देशिका विकल्प के साथ ( /s
) मेरी सीपीयू ठोक, और पूरा करने के लिए कुछ समय लिया।
fsutil
मूल रूप से दो बार चल रहा है ऊपर समाप्त होता है; पहली बार प्रत्येक कॉल के द्वारा लौटाए गए आउटपुट लाइनों की संख्या की गणना करके हार्ड लिंक की पहचान करने के लिए, और दूसरी बार आउटपुट को सही करने के लिए हार्ड-लिंक पर पाया गया।
- डुप्लीकेट लाइनें होंगी। उन्हें समाप्त करने के लिए आप किसी फ़ाइल में आउटपुट को पुनर्निर्देशित करना चाहेंगे और फिर फ़ाइल को उपकरण जैसे माध्यम से चला सकते हैं
uniq
।
यहाँ एक बैच फ़ाइल है जो for
हार्ड लिंक को पहचानने के लिए उपयोग करता है। जैसा कि forfiles
शामिल नहीं है, यह थोड़ा तेज़ हो सकता है, हालांकि यह अभी भी ऊपर के एक-लाइनर के शेष गुहाओं को पीड़ित करता है।
@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.
)
)
कुछ अन्य (अप्रयुक्त) विकल्प हैं:
(पुराने) Microsoft HL स्कैन उपयोगिता का उपयोग करें
hlscan /dir %CD%
Microsoft के SFUA उपयोगिता टूलकिट के साथ आने वाले वैकल्पिक खोज आदेश का उपयोग करें :
find . -links +1
ऊपर बताए गए तरीके से Sysinternals की findlinks उपयोगिता का उपयोग करेंfsutil
Uwe Sieber's ListLinks प्रोग्राम का उपयोग करें - उपयोग के लिए लिंक देखें
उपयोग Nirsoft के NTFSLinksView यदि आप एक जीयूआई आवेदन पसंद करते हैं