कार्य: C: \ temp, (शीर्ष / आकार द्वारा क्रमबद्ध) में मुख्य फ़ोल्डर प्रदर्शित करें, c: \ temp फ़ोल्डर में इसके अंदर बहुत सारे उप फ़ोल्डर हैं, लंबे पथ भी।
पसंद
c:\temp
c:\temp\folder1
c:\temp\folder1\sub_folder
c:\temp\folder2
c:\temp\folder2\sub_folder_more_folder_long_folders_files_names_as_well
मैं इस तरह से फ़ोल्डर्स की सूची प्रदर्शित करना चाहता हूं
Name Type Size
folder1 Directory 10
folder2 Directory 12
मैं आकार के साथ-साथ फ़ोल्डर नाम प्राप्त करने के लिए निम्नलिखित पॉवरशेल स्क्रिप्ट का उपयोग कर रहा हूं, आकार द्वारा क्रमबद्ध, और अंत में केवल शीर्ष 20 फ़ोल्डर्स प्रदर्शित करें।
ls c:\temp | select Name,
@{
Name="Type";Expression={
if($_.psIsContainer)
{
"Directory"
}
else
{
"File"
}
}
},
@{
Name="Size(GB)";
Expression=
{
[Math]::Round($(ls $_.FullName -recurse| measure Length -sum).Sum/1GB, 3)
}
} | sort -property "Size(GB)" -desc | Select -First 20
यह मुझे परिणाम देता है,
USER1 Directory 11.166
USER2 Directory 2.917
USER3 Directory 0.042
The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.The specified path, file name, or both are too long.
जैसा कि मैं देख सकता हूं कि यह लंबे पथ नामों की त्रुटि देता है, मैं इस मुद्दे को कैसे दूर कर सकता हूं?
.ShortName , सभी फ़ोल्डर्स समान आकार दिखाते हैं
du -hs | sort -n। आप नेट पर पावरशेल में कुछ कार्यान्वयन देख सकते हैं। उदाहरण के लिए इस ब्लॉग पेज पर या इसमें उत्तर । जांचें कि क्या आप अपनी समस्या को दूर करते हैं और याद रखें कि आप हमेशा स्थापित कर सकते हैं खिड़कियों के लिए coreutils ।
.ShortNameके बजाय.FullName...? BTW भले ही यह अब काम करता है, और गहरा यह अभी भी हो सकता है।