ค้นหาเว็บไซต์

วิธีนับไฟล์ในโฟลเดอร์โดยใช้ PowerShell


คุณอาจพบสถานการณ์ที่คุณต้องนับจำนวนไฟล์ที่มีอยู่ในโฟลเดอร์โดยใช้ PowerShell ในบทช่วยสอนนี้ ฉันจะอธิบายวิธีนับไฟล์ในโฟลเดอร์โดยใช้ PowerShell

ในการนับไฟล์ในโฟลเดอร์โดยใช้ PowerShell คุณสามารถใช้ Get-ChildItem cmdlet รวมกับ Measure-Object cmdlet ตัวอย่างเช่น หากต้องการนับไฟล์ทั้งหมดในโฟลเดอร์เฉพาะ คุณจะต้องใช้ $fileCount=(Get-ChildItem -Path “C:\Your\Target\Directory” -File).Count คำสั่งนี้จะส่งคืนจำนวนไฟล์ในไดเร็กทอรีที่ระบุ ไม่รวมไดเร็กทอรีย่อยและรายการที่ไม่ใช่ไฟล์

นับไฟล์ในโฟลเดอร์โดยใช้ PowerShell

วิธีที่ง่ายที่สุดวิธีหนึ่งในการนับไฟล์ในโฟลเดอร์โดยใช้ PowerShell คือการใช้ฟังก์ชันการนับ นี่คือตัวอย่าง PowerShell ที่สมบูรณ์

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath).Count
Write-Host "There are $fileCount files in $folderPath"

สคริปต์นี้ตั้งค่าเส้นทางไดเรกทอรีเป้าหมายให้เป็นตัวแปร จากนั้นใช้ cmdlet Get-ChildItem เพื่อดึงข้อมูลรายการในไดเรกทอรี จากนั้นจะใช้วิธี .Count เพื่อนับรายการ ผลลัพธ์จะแสดงโดยใช้ Write-Host

คุณสามารถดูภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์โดยใช้โค้ด VS

การนับไฟล์แบบวนซ้ำ

หากคุณต้องการนับไฟล์ทั้งหมดภายในโฟลเดอร์และโฟลเดอร์ย่อย (แบบเรียกซ้ำ) โดยใช้ PowerShell คุณสามารถเพิ่มพารามิเตอร์ -Recurse ได้

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath -Recurse | Measure-Object).Count
Write-Host "There are $fileCount files in $folderPath and its subfolders"

ในที่นี้ Get-ChildItem ได้รับการส่งไปยัง Measure-Object ซึ่งจะนับอ็อบเจ็กต์ทั้งหมดที่ส่งไปให้ โดยระบุจำนวนไฟล์ทั้งหมด รวมถึงไดเรกทอรีย่อยด้วย

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง และแสดงให้ฉันเห็นว่ามีไฟล์จำนวนเท่าใดในโฟลเดอร์และโฟลเดอร์ย่อย

นับประเภทไฟล์ที่ระบุในโฟลเดอร์

หากต้องการนับจำนวนไฟล์ประเภทใดประเภทหนึ่ง คุณสามารถใช้พารามิเตอร์ -Filter ตัวอย่างเช่น หากต้องการนับไฟล์ .txt ในโฟลเดอร์โดยใช้ PowerShell คุณสามารถเขียนสคริปต์ได้ดังนี้:

$folderPath = "C:\MyFolder"
$fileType = "*.txt"
$fileCount = (Get-ChildItem -Path $folderPath -Filter $fileType -Recurse | Measure-Object).Count
Write-Host "There are $fileCount text files in $folderPath and its subfolders"

สคริปต์นี้จะนับไฟล์ .txt ทั้งหมดในโฟลเดอร์ที่ระบุและโฟลเดอร์ย่อย

แยกโฟลเดอร์ในการนับ

คุณอาจต้องการนับไฟล์ภายในโฟลเดอร์และต้องการยกเว้นโฟลเดอร์ย่อย คุณสามารถทำได้โดยใช้พารามิเตอร์ -Exclude ใน PowerShell

$folderPath = "C:\MyFolder"
$excludeFolders = @("Subfolder1", "Subfolder2")
$fileCount = (Get-ChildItem -Path $folderPath -Recurse -Exclude $excludeFolders | Measure-Object).Count
Write-Host "There are $fileCount files in $folderPath excluding certain subfolders"

สคริปต์นี้จะนับไฟล์ทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อย ยกเว้น “โฟลเดอร์ย่อย1” และ “โฟลเดอร์ย่อย2”

ค้นหาไฟล์ที่มีขนาดใหญ่กว่า X MB ในโฟลเดอร์

สำหรับการกรองที่ซับซ้อนมากขึ้น คุณสามารถใช้ ScriptBlock เพื่อนับไฟล์ตามเงื่อนไขบางประการ ตัวอย่างเช่น หากต้องการนับไฟล์ที่มีขนาดใหญ่กว่า 1MB โดยใช้ PowerShell:

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath -Recurse | Where-Object { $_.Length -gt 1MB } | Measure-Object).Count
Write-Host "There are $fileCount files larger than 1MB in $folderPath and its subfolders"

Where-Object cmdlet ถูกใช้ที่นี่เพื่อกรองไฟล์ตามขนาดก่อนที่จะนับด้วย Measure-Object

การพิจารณาประสิทธิภาพ

เมื่อทำงานกับไดเร็กทอรีขนาดใหญ่ ประสิทธิภาพอาจเป็นปัญหาได้ เพื่อปรับปรุงประสิทธิภาพ คุณสามารถใช้สวิตช์ -File กับ Get-ChildItem เพื่อเรียกข้อมูลเฉพาะไฟล์ (ข้ามไดเรกทอรี) ซึ่งสามารถเร่งความเร็วคำสั่งได้:

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath -Recurse -File | Measure-Object).Count
Write-Host "There are $fileCount files in $folderPath and its subfolders"

PowerShell นับไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อย

หากต้องการนับไฟล์ทั้งในโฟลเดอร์และโฟลเดอร์ย่อยโดยใช้ PowerShell คุณจะต้องใช้ cmdlet Get-ChildItem พร้อมด้วยพารามิเตอร์ -Recurse ซึ่งสั่งให้ PowerShell รวมทั้งหมด ไดเรกทอรีย่อยในการค้นหา สามารถใช้พารามิเตอร์ -File เพื่อให้แน่ใจว่าจะนับเฉพาะไฟล์เท่านั้น โดยไม่รวมไดเร็กทอรีจากการนับ

ต่อไปนี้เป็นคำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงานนี้:

  1. เปิด PowerShell: คุณสามารถทำได้โดยค้นหา PowerShell ในเมนู Start หรือโดยคลิกขวาที่ปุ่ม Start แล้วเลือก “Windows PowerShell” จากเมนูบริบท
  2. ใช้ Get-ChildItem: cmdlet Get-ChildItem จะดึงข้อมูลไฟล์และโฟลเดอร์ในเส้นทางที่ระบุ เมื่อใช้กับพารามิเตอร์ -Recurse มันจะค้นหาซ้ำในไดเรกทอรีย่อยทั้งหมด
  3. ตัวกรองสำหรับไฟล์: พารามิเตอร์ -File ช่วยให้มั่นใจได้ว่าจะพิจารณาเฉพาะไฟล์เท่านั้น โดยไม่รวมไดเร็กทอรีจากผลลัพธ์
  4. นับผลลัพธ์: ไพพ์เอาต์พุตของ Get-ChildItem ไปยัง Measure-Object cmdlet ซึ่งจะนับอ็อบเจ็กต์ที่ถูกส่งผ่านไป .

นี่คือสคริปต์ PowerShell ที่สมบูรณ์เพื่อนับไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อย:

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath -Recurse -File | Measure-Object).Count
Write-Host "There are $fileCount files in $folderPath and its subfolders"

ในสคริปต์นี้:

  • $folderPath เก็บเส้นทางไปยังไดเร็กทอรีเป้าหมาย
  • Get-ChildItem -Path $folderPath -Recurse -File ดึงข้อมูลไฟล์ทั้งหมดในไดเร็กทอรีเป้าหมายและไดเร็กทอรีย่อย
  • Measure-Object ได้รับการไปป์ (|) รายการไฟล์และใช้คุณสมบัติ .Count เพื่อนับ
  • Write-Host ใช้เพื่อส่งออกผลลัพธ์ไปยังคอนโซล

คำสั่งนี้มีประสิทธิภาพและตรงไปตรงมาสำหรับการนับไฟล์ข้ามแผนผังไดเร็กทอรี อย่าลืมแทนที่ "C:\MyFolder" ด้วยเส้นทางจริงไปยังไดเรกทอรีที่คุณต้องการวิเคราะห์

บทสรุป

PowerShell มี cmdlet ที่แตกต่างกันสำหรับการนับไฟล์ในโฟลเดอร์ เช่น การนับแบบเรียกซ้ำ การกรองตามประเภทไฟล์ ไม่รวมไดเรกทอรี และอื่นๆ

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีการนับไฟล์ในโฟลเดอร์ใน PowerShell โดยใช้วิธีต่างๆ

บทความที่เกี่ยวข้อง