ในการลบไฟล์แต่เก็บโฟลเดอร์ไว้ใน Windows 10 ให้ใช้ PowerShell เพื่อแสดงรายการเฉพาะไฟล์และส่งรายการเหล่านั้นไปยังคำRemove-Itemสั่งลบ โฟลเดอร์จะไม่ถูกส่งไปยังคำสั่งลบ ดังนั้นโครงสร้างโฟลเดอร์จึงยังคงอยู่ ตรวจสอบเป้าหมาย-WhatIfก่อนด้วยคำสั่งลบ: การดำเนินการนี้จะข้ามถังรีไซเคิลของ File Explorer ดังนั้นควรสำรองข้อมูลก่อนที่จะดำเนินการจริง
ก่อนที่คุณจะลบอะไรก็ตาม
เลือกโฟลเดอร์หลักที่คุณต้องการล้างอย่างแม่นยำ จากนั้นตรวจสอบว่าไม่มีไฟล์ที่คุณยังต้องการใช้งานอยู่ในโฟลเดอร์นั้น ปิดแอปพลิเคชันที่อาจกำลังใช้งานไฟล์เหล่านั้นอยู่ หากไดเร็กทอรีนั้นซิงค์กับบริการคลาวด์หรือแชร์กับผู้อื่น ให้คำนึงถึงผลกระทบของการลบไฟล์เหล่านั้นด้วย
- ใช้เส้นทางโฟลเดอร์แบบเต็ม ไม่ใช่ตัวอักษรไดรฟ์หรือตำแหน่งแบบกว้างๆ เช่น
C:\.
- สำรองไฟล์สำคัญก่อน โปรแกรมนี้
Remove-Itemไม่มีขั้นตอนการกู้คืนจากถังรีไซเคิลใน File Explorer
- เรียกใช้ PowerShell ด้วยบัญชีที่มีสิทธิ์เข้าถึงเป้าหมาย เริ่มต้นด้วยหน้าต่างปกติสำหรับไฟล์ของคุณเอง การยกระดับสิทธิ์ไม่ได้ยกเลิกข้อจำกัดด้านความปลอดภัยทั้งหมด
เลือกโฟลเดอร์หลักที่คุณต้องการคงลำดับชั้นไว้
ดูตัวอย่างไฟล์ที่ PowerShell จะลบ
เปิดเมนู Start ค้นหาWindows PowerShellแล้วเรียกใช้งาน เลือก$rootโฟลเดอร์ที่คุณต้องการล้างข้อมูล อย่าลืมใส่เครื่องหมายอัญประกาศรอบเส้นทาง โดยเฉพาะอย่างยิ่งหากมีช่องว่างในเส้นทาง:
$root = 'D:\Projects\Project'
Get-ChildItem -LiteralPath $root -File -Recurse -Force |
Remove-Item -WhatIf
แทนที่เส้นทางตัวอย่างด้วย-LiteralPathเส้นทางของคุณเอง คำสั่งนี้จะถือว่าค่าดังกล่าวเป็นเส้นทางตามตัวอักษรแทนที่จะตีความอักขระตัวแทน คำสั่ง -Fileนี้จะจำกัดผลลัพธ์เฉพาะไฟล์-Recurseรวมถึงไฟล์ในโฟลเดอร์ย่อย และ-Forceรวมถึงไฟล์ที่ซ่อนอยู่หรือไฟล์ระบบในการค้นหา ส่วน-WhatIfคำสั่งสุดท้ายจะขอให้ PowerShell แสดงสิ่งที่จะเกิดขึ้นหากไม่ทำการลบ
ตัวเลือก -WhatIf จะแสดงรายการไฟล์เป้าหมายโดยไม่ลบไฟล์เหล่านั้น
อ่านเส้นทางทุกเส้นทางที่แสดงในตัวอย่าง ตรวจสอบให้แน่ใจว่าแต่ละเส้นทางอยู่ภายในโครงสร้างโฟลเดอร์ที่คุณต้องการล้าง PowerShell ควรรายงานการดำเนินการกับไฟล์ หากเส้นทางเป้าหมายไม่ถูกต้องหรือคุณเห็นไดเร็กทอรีที่คุณไม่คาดคิด ให้หยุดและแก้ไข$rootก่อนดำเนินการต่อ
ตรวจสอบเส้นทางแต่ละรายการอย่างละเอียด การแสดงตัวอย่างควรระบุชื่อไฟล์ ไม่ใช่ชื่อไดเร็กทอรี
ลบไฟล์ทั้งหมด แต่คงโฟลเดอร์ไว้
เมื่อการแสดงตัวอย่างถูกต้องแล้ว ให้เรียกใช้ไปป์ไลน์เฉพาะไฟล์เดียวกันโดยไม่ต้องมี-WhatIf:
Get-ChildItem -LiteralPath $root -File -Recurse -Force |
Remove-Item -Force
Get-ChildItemคำสั่งนี้จะลบ เฉพาะไฟล์อ็อบเจ็กต์เท่านั้นRemove-Itemโดยจะคงโฟลเดอร์รากและโฟลเดอร์ย่อยไว้ โฟลเดอร์ว่างจะยังคงว่าง คำสั่งนี้จะไม่ลบโฟลเดอร์เหล่านั้น คำสั่งที่สอง-Forceอนุญาตให้Remove-Itemลบไฟล์ที่ซ่อนอยู่หรือไฟล์อ่านอย่างเดียวได้ แต่ไม่สามารถข้ามการควบคุมการเข้าถึงได้ Microsoft ได้บันทึกตัวเลือกการลบเฉพาะไฟล์และการแสดงรายการแบบวนซ้ำไว้ในเอกสารอ้างอิง Get-ChildItemและอธิบายรายละเอียด-Forceเพิ่มเติม-WhatIfใน เอกสาร อ้างอิงRemove-Item
โครงสร้างโฟลเดอร์แบบซ้อนกันจะยังคงอยู่แม้หลังจากลบรายการไฟล์แล้ว
จำกัดการล้างข้อมูลให้เหลือเพียงไฟล์ประเภทเดียว
หากต้องการลบเฉพาะนามสกุลไฟล์ที่ระบุ ให้เพิ่มตัวกรองก่อนหน้าRemove-Itemตัวอย่างเช่น ดูตัวอย่างเฉพาะ.txtไฟล์ในโครงสร้างไฟล์ทั้งหมด:
Get-ChildItem -LiteralPath $root -File -Recurse -Force |
Where-Object { $_.Extension -ieq '.txt' } |
Remove-Item -WhatIf
หลังจากตรวจสอบตัวอย่างแล้ว ให้รันไปป์ไลน์เดียวกันโดยRemove-Item -Forceใช้ แทนRemove-Item -WhatIfสำหรับชื่อไฟล์ที่ซ้ำกันในโฟลเดอร์ย่อยต่างๆ ให้ใช้ตัวกรอง$_.Nameแทน$_.Extensionเช่นWhere-Object { $_.Name -ieq 'image.png' }ตัวกรองเหล่านี้ยังคงทำงานกับออบเจ็กต์ไฟล์ ดังนั้นโครงสร้างโฟลเดอร์จึงยังคงอยู่
ตรวจสอบผลลัพธ์และแก้ไขข้อผิดพลาด
ตรวจสอบว่าพาธรากยังคงอยู่หรือไม่ และนับจำนวนไฟล์ที่ PowerShell ยังคงค้นหาได้:
Test-Path -LiteralPath $root
@(Get-ChildItem -LiteralPath $root -File -Recurse -Force).Count
คำสั่งแรกควรส่งคืนค่าTrue. ค่า 0 0หมายความว่าการค้นหาไม่พบไฟล์ที่เหลืออยู่ หากคุณเห็นข้อผิดพลาดการเข้าถึงถูกปฏิเสธหรือไฟล์กำลังใช้งานอยู่ แสดงว่ารายการที่ได้รับผลกระทบไม่ได้ถูกลบออก ปิดแอปโดยใช้ไฟล์และลองอีกครั้ง สำหรับตำแหน่งที่ได้รับการป้องกัน ให้ใช้บัญชีที่มีสิทธิ์ที่จำเป็นเฉพาะเมื่อคุณได้รับอนุญาตให้เปลี่ยนแปลงไฟล์เหล่านั้นเท่านั้น-Forceจัดการเฉพาะคุณลักษณะของไฟล์บางอย่าง ไม่ใช่ข้อจำกัดด้านสิทธิ์
หากเป้าหมายของคุณคือการลบไฟล์โดยคงชื่อโฟลเดอร์ไว้ทั้งหมด ให้คงตัว-Fileกรองไว้และตรวจสอบ-WhatIfผลลัพธ์ก่อนการใช้งานจริงทุกครั้ง หลีกเลี่ยงคำสั่งต่างๆ เช่นRemove-Item $root -Recurse`:` ซึ่งกำหนดเป้าหมายเฉพาะเนื้อหาของไดเร็กทอรีและอาจลบโฟลเดอร์ด้วย