পাওয়ারশেলের সাহায্যে একটি ফোল্ডারে আইটেমগুলি গণনা করুন


92

আমি প্রদত্ত ফোল্ডারে ( c:\MyFolder) এবং ফাইলগুলির মোট সংখ্যা (ফাইল এবং ফোল্ডার উভয়) দেওয়ার জন্য খুব সাধারণ পাওয়ারশেল স্ক্রিপ্টটি লেখার চেষ্টা করছি । আমি যা করেছি তা এখানে:

Write-Host ( Get-ChildItem c:\MyFolder ).Count;

সমস্যাটি হ'ল আমার কাছে যদি 1 বা 0 টি আইটেম থাকে তবে কমান্ডটি কাজ করে না --- এটি কিছুই দেয় না।

কোন ধারনা?

উত্তর:


151

Measure-Objectজিনিসগুলি গণনা করার জন্য আপনার ব্যবহার করা উচিত । এই ক্ষেত্রে এটি দেখতে হবে:

Write-Host ( Get-ChildItem c:\MyFolder | Measure-Object ).Count;

বা যদি এটি খুব দীর্ঘ হয়

Write-Host ( dir c:\MyFolder | mo).Count;

এবং পাওয়ারশেলে ৪.০ এর measureপরিবর্তে উপনামটি ব্যবহার করুনmo

Write-Host (dir c:\MyFolder | measure).Count;

একটি নির্দিষ্ট ফোল্ডারের ভিতরে সমস্ত ফোল্ডারগুলির জন্য গণনা কীভাবে পাবেন?
মিহির

38

অবশেষে আমি এই লিঙ্কটি পেয়েছি:

https://blogs.perficient.com/microsoft/2011/06/powershell-count-property-returns-n কিছুই/

ঠিক আছে, দেখা যাচ্ছে যে এটি সঠিকভাবে ঘটেছিল কারণ ডিরেক্টরিতে কেবল একটি ফাইল ছিল। কিছু অনুসন্ধানে জানা গেছে যে এই ক্ষেত্রে, পাওয়ারশেল অ্যারের পরিবর্তে একটি স্কেলার অবজেক্ট ফেরত দেয়। এই অবজেক্টের একটি গণনার সম্পত্তি নেই, তাই পুনরুদ্ধার করার মতো কিছুই নেই।

সমাধান - পাওয়ারশেলকে @প্রতীক সহ একটি অ্যারে ফিরিয়ে আনতে বাধ্য করুন :

Write-Host @( Get-ChildItem c:\MyFolder ).Count;

4
পারফেক্ট, ধন্যবাদ কমান্ডলেটগুলি "সহায়ক" হওয়ার চেষ্টা করে এবং তাদের ফেরতের ধরন পরিবর্তিত করার সময় আমি বিরক্তিকর বলে মনে করি।
পল সুয়ার্ট

35

আপনার যদি প্রক্রিয়াটি দ্রুত করার প্রয়োজন হয় (উদাহরণস্বরূপ 30k বা আরও বেশি ফাইল গণনা করা) তবে আমি এই জাতীয় কিছু দিয়ে যাব ..

$filepath = "c:\MyFolder"
$filetype = "*.txt"
$file_count = [System.IO.Directory]::GetFiles("$filepath", "$filetype").Count

এটি দ্রুততার একটি ক্রম! ধন্যবাদ আমার এতে 29K-রও বেশি ফাইল সহ একটি ফোল্ডার ছিল এবং এই পদ্ধতিটি আমার আঙুলটি রিটার্ন কী থেকে উত্তোলনের সাথে সাথে দ্রুত গণনা ফিরিয়ে দিয়েছে।
xizdaqrian

4
আপনি এখানে[System.IO.Directory]::GetFiles("$filepath", "$filetype",1) দেখুন এর সাথে পুনরাবৃত্তি করতে পারেন
কোডি G

14

কেবলমাত্র ফাইল

Get-ChildItem D:\ -Recurse -File | Measure-Object | %{$_.Count}

কেবল ফোল্ডার

Get-ChildItem D:\ -Recurse -Directory | Measure-Object | %{$_.Count}

দুটোই

Get-ChildItem D:\ -Recurse | Measure-Object | %{$_.Count}

4
প্রথমটিতে, আমি কীভাবে সমস্ত jpg এবং png ফাইল অনুসন্ধান করব?
আল লেলোপাথ

4
@ অলেলোপাথGet-ChildItem D:\ -Recurse -File -Include *.jpg,*.png | Measure-Object | %{$_.Count}
এইচডিভি

হাই এই কোন পরামর্শ @dhcgn stackoverflow.com/questions/54916917/...
rickyProgrammer


1

ইন PowerShell আপনি এই কমান্ড অঙ্ক খুঁজছেন জন্য, severals কমান্ড ব্যবহার করতে পারেন: Get-Alias;

সুতরাং যে ক্যাম্যান্ডম ব্যবহার করা যায় তা হ'ল:

write-host (ls MydirectoryName).Count

বা

write-host (dir MydirectoryName).Count

বা

write-host (Get-ChildrenItem MydirectoryName).Count

0

একটি ফোল্ডারে একটি নির্দিষ্ট ফাইল টাইপের সংখ্যা গণনা করতে। উদাহরণস্বরূপ F: ড্রাইভে এমপি 3 ফাইল গণনা করা।

( Get-ChildItme F: -Filter *.mp3 - Recurse | measure ).Count

6.2.3 এ পরীক্ষিত, তবে 4> কাজ করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.