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

