วิธีลบไฟล์ที่เก่ากว่า X วันใน PowerShell
หากคุณต้องการดูแลรักษาและจัดระเบียบไฟล์ คุณควรลบไฟล์ที่ไม่จำเป็นอีกต่อไปเป็นประจำ โดยเฉพาะไฟล์ที่เก่ากว่าจำนวนวันที่กำหนด ในบทช่วยสอนนี้ ฉันจะแสดงวิธีลบไฟล์ที่เก่ากว่า X วันใน PowerShell
หากต้องการลบไฟล์ที่เก่ากว่าจำนวนวันที่ระบุใน PowerShell ให้ใช้ Get-ChildItem cmdlet เพื่อดึงไฟล์จากไดเร็กทอรี กรองไฟล์ตามเวลาเขียนล่าสุดด้วย Where-Object cmdlet จากนั้นลบออกด้วย Remove- รายการ. ตัวอย่างเช่น หากต้องการลบไฟล์ที่เก่ากว่า 30 วัน คุณสามารถใช้คำสั่งนี้: Get-ChildItem -Path “C:\MyFolder” | โดยที่วัตถุ {$_.LastWriteTime -lt (รับ-วันที่).AddDays(-30)} | ลบรายการ
ลบไฟล์ที่เก่ากว่า X วันใน PowerShell
PowerShell ให้ Get-ChildItem cmdlet เพื่อลบไฟล์ที่เก่ากว่าจำนวนวันที่กำหนด
เมื่อใช้คำสั่งนี้ ขั้นแรกจะดึงไฟล์จากไดเร็กทอรีที่ระบุ จากนั้นจึงส่งเอาต์พุตไปที่ Where-Object cmdlet เพื่อกรองไฟล์ตามอายุ สุดท้าย Remove-Item cmdlet จะใช้ในการลบไฟล์
นี่คือตัวอย่างพื้นฐานของสคริปต์ที่จะลบไฟล์ที่เก่ากว่า 30 วันออกจากโฟลเดอร์เฉพาะ:
$Path = "C:\MyFolder"
$Days = 30
Get-ChildItem -Path $Path | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | Remove-Item
ในสคริปต์นี้ $Path ระบุไดเร็กทอรีเพื่อค้นหาไฟล์ และ $Days กำหนดจำนวนวันที่ใช้ในการกรองไฟล์ตามเวลาการเขียนครั้งล่าสุด ไฟล์ที่เก่ากว่า 30 วันนับจากวันที่ปัจจุบันจะถูกลบออก
ในภาพหน้าจอด้านล่าง ฉันรันสคริปต์ ซึ่งจะลบไฟล์ทั้งหมดที่เก่ากว่า 30 วันออกจากไดเร็กทอรี
ลบประเภทไฟล์เฉพาะที่เก่ากว่า 30 วันใน PowerShell
คุณยังสามารถแก้ไขสคริปต์ PowerShell เพื่อลบไฟล์บางประเภทหรือยกเว้นบางไดเร็กทอรีที่เก่ากว่า 30 วันได้ ตัวอย่างเช่น หากต้องการลบเฉพาะไฟล์ .log ที่เก่ากว่า 30 วัน คุณสามารถใช้สคริปต์ต่อไปนี้:
$Path = "C:\Logs"
$Days = 30
Get-ChildItem -Path $Path -Filter *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | Remove-Itemสคริปต์ PowerShell นี้จะค้นหาไฟล์ .log โดยเฉพาะ และยกเว้นไฟล์ประเภทอื่นๆ ทั้งหมด
การจัดการข้อผิดพลาดและการบันทึก
เป็นการดีเสมอที่จะจัดการกับข้อผิดพลาดขณะเขียนสคริปต์ PowerShell คุณสามารถเพิ่มพารามิเตอร์ -ErrorAction และ -ErrorVariable เพื่อบันทึกข้อผิดพลาดใดๆ ที่เกิดขึ้น นอกจากนี้ คุณยังสามารถส่งออกการดำเนินการไปยังไฟล์บันทึกได้โดยใช้ Out-File หรือ Add-Content cmdlets ต่อไปนี้คือวิธีที่คุณสามารถแก้ไขสคริปต์ PowerShell เพื่อรวมการจัดการข้อผิดพลาดและการบันทึก:
$Path = "C:\MyFolder"
$Days = 30
$LogPath = "C:\Logs\log.txt"
$ErrorActionPreference = "Continue"
Get-ChildItem -Path $Path -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | ForEach-Object {
try {
$_ | Remove-Item -ErrorAction Stop
"$($_.FullName) was deleted successfully" | Out-File -FilePath $LogPath -Append
} catch {
"An error occurred: $_" | Out-File -FilePath $LogPath -Append
}
}ในสคริปต์ PowerShell ข้างต้น $LogPath ระบุเส้นทางไปยังไฟล์บันทึกที่จะบันทึกการดำเนินการ บล็อก try จะพยายามลบไฟล์และบันทึกข้อความแสดงความสำเร็จ ในขณะที่บล็อก catch จะบันทึกข้อผิดพลาดและบันทึกข้อผิดพลาดเหล่านั้น
บทสรุป
การใช้ PowerShell เพื่อลบไฟล์ที่เก่ากว่าจำนวนวันที่กำหนดนั้นง่ายและสะดวกที่สุด
ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีลบไฟล์ที่เก่ากว่า X วันใน PowerShell โดยใช้ Get-ChildItem และ Remove-Item cmdlets
