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

วิธีลบโฟลเดอร์ว่างทั้งหมดใน PowerShell (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน PowerShell เพื่อแสดงรายการโฟลเดอร์ว่างทั้งหมดในไดเรกทอรีปัจจุบัน:

Dir -Directory -Recurse | Where-Object {$_.GetFileSystemInfos().Count -eq 0 }

จากนั้นคุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อ ลบโฟลเดอร์ว่างทั้งหมด ในไดเรกทอรีปัจจุบันแบบวนซ้ำ:

Get-ChildItem -Recurse -Force -Directory | 
  Sort-Object -Property FullName -Descending |
  Where-Object { $($_ | Get-ChildItem -Force | Select-Object -First 1).Count -eq 0 } |
  Remove-Item -Verbose

โปรดทราบว่าเราใช้ Remove-Item cmdlet ในบรรทัดสุดท้ายเพื่อลบโฟลเดอร์ว่าง และเราระบุ -Verbose เพื่อให้ PowerShell ส่งออกชื่อของโฟลเดอร์ที่จะลบ

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีลบโฟลเดอร์ว่างทั้งหมดใน PowerShell

สมมติว่าเราต้องการลบโฟลเดอร์ว่างทั้งหมดในไดเร็กทอรีปัจจุบันของเรา

ก่อนอื่นเราสามารถใช้คำสั่ง Dir เพื่อดูโฟลเดอร์ทั้งหมดในไดเร็กทอรีปัจจุบัน:

Dir -Directory -Recurse

ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:

เราจะเห็นว่าไดเร็กทอรีปัจจุบันมีห้าโฟลเดอร์และไม่มีโฟลเดอร์ใดที่มีโฟลเดอร์ย่อย

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อตรวจสอบก่อนว่ามีโฟลเดอร์ใดว่างหรือไม่:

Dir -Directory -Recurse | Where-Object {$_.GetFileSystemInfos().Count -eq 0 }

ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:

สิ่งนี้จะส่งคืนชื่อของสองโฟลเดอร์ที่ว่างเปล่า:

  • สถานที่
  • ภูมิภาค

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อลบโฟลเดอร์เหล่านี้ออกจากไดเร็กทอรี:

Get-ChildItem -Recurse -Force -Directory | 
  Sort-Object -Property FullName -Descending |
  Where-Object { $($_ | Get-ChildItem -Force | Select-Object -First 1).Count -eq 0 } |
  Remove-Item -Verbose

ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:

คำสั่ง VERBOSE ในเอาต์พุตบอกเราว่าทั้งโฟลเดอร์ regions และ locations ได้ถูกลบออกไปแล้ว

เราสามารถใช้คำสั่ง Dir อีกครั้งเพื่อดูโฟลเดอร์ทั้งหมดในไดเร็กทอรีปัจจุบัน:

เราจะเห็นว่าโฟลเดอร์ ภูมิภาค และ สถานที่ ถูกลบออกจากไดเรกทอรีปัจจุบันแล้ว

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