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 แล้ว


