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

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


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

$keep = Get-Content keep.txt

gci ./data1 | Where-Object { $keep -notcontains $_.name } | Remove-Item

ตัวอย่างนี้จะลบไฟล์ทั้งหมดในไดเรกทอรีชื่อ data1 ซึ่งไม่อยู่ในรายการชื่อไฟล์ที่ระบุในไฟล์ keep.txt

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

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

สมมติว่าเราต้องการลบไฟล์ทั้งหมดในไดเร็กทอรีชื่อ data1 ซึ่งไม่อยู่ในรายการชื่อไฟล์ที่มีอยู่ในไฟล์ชื่อ keep.txt

เราสามารถใช้ Get-Content cmdlet เพื่อดูชื่อไฟล์แต่ละชื่อในไฟล์ keep.txt ก่อน:

เราจะเห็นได้ว่ามีชื่อไฟล์สามชื่อที่บันทึกไว้ในไฟล์ Keep.txt:

  • ทีม.csv
  • coaches.csv
  • managers.csv

ต่อไป เราสามารถใช้ gci (นามแฝงสำหรับ Get-ChildItem) cmdlet เพื่อดูไฟล์ทั้งหมดในไดเรกทอรีชื่อ data1:

เราจะเห็นว่ามีไฟล์ทั้งหมดหกไฟล์ในไดเร็กทอรีนี้

สมมติว่าเราต้องการลบไฟล์ทั้งหมดในไดเร็กทอรีนี้ซึ่งไม่อยู่ในรายชื่อไฟล์ที่ระบุในไฟล์ keep.txt

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการดังกล่าว:

$keep = Get-Content keep.txt

gci ./data1 | Where-Object { $keep -notcontains $_.name } | Remove-Item

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

โปรดสังเกตว่าเมื่อเราเรียกใช้คำสั่ง gci อีกครั้ง เราจะเห็นว่าไฟล์ทั้งหมดในโฟลเดอร์ data1 ที่ไม่ได้อยู่ในรายการชื่อไฟล์ที่ระบุใน keep ลบไฟล์ .txt แล้ว

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