ฉันมีเซิร์ฟเวอร์เล็ก ๆ ที่เริ่มเต็มแล้ว
ฉันต้องการลบไฟล์เก่าทั้งหมดที่ไม่ได้เปิดหรือแก้ไขในเวลานาน
มีวิธีการค้นหาไดรฟ์ทั้งหมดตามวันที่เปิด - และแบบฟอร์มการสั่งซื้อล่าสุดเปิดล่าสุด?
ฉันมีเซิร์ฟเวอร์เล็ก ๆ ที่เริ่มเต็มแล้ว
ฉันต้องการลบไฟล์เก่าทั้งหมดที่ไม่ได้เปิดหรือแก้ไขในเวลานาน
มีวิธีการค้นหาไดรฟ์ทั้งหมดตามวันที่เปิด - และแบบฟอร์มการสั่งซื้อล่าสุดเปิดล่าสุด?
คำตอบ:
น่าแปลกที่ฉันเพิ่งใช้งานโครงการเพื่อจัดระเบียบข้อมูลเก่า / ประวัติ บริษัท ของฉัน
ฉันใช้สคริปต์ PowerShell ที่ฉันเขียนด้านล่างซึ่งส่งออกไฟล์ CSV สำหรับไฟล์ทั้งหมดที่เจอ ฉันใช้ Excel เพื่อเรียงลำดับข้อมูลสำหรับคอลัมน์ใดก็ได้ที่มีประโยชน์ที่สุดสำหรับฉัน
Get-ChildItem C:\*path* -Recurse | Select-Object Name, CreationTime, LastAccessTime, Directory, @{Name="Kbytes";Expression={$_.Length / 1Kb}} | Export-CSV xxxxxxx.csv
คุณสามารถคัดลอกข้างต้นแล้ววางในแผ่นจดบันทึกเปลี่ยนเส้นทางไปยังตำแหน่งที่ไฟล์ของคุณถูกบันทึกไว้ (ภายในเครื่องจะดีที่สุดแม้ว่าไดรฟ์ที่แมปจะทำงานได้) จากนั้นบันทึกเป็น "filename.ps1"
หากคุณพบข้อผิดพลาดในการพยายามเรียกใช้สคริปต์ PowerShell โปรดแจ้งให้เราทราบและฉันสามารถให้คำแนะนำได้
PowerShell:
Get-ChildItem \ -Recurse | Sort-Object LastAccessTime | Select-Object FullName, LastAccessTime
นี่จะค้นหาไฟล์และโฟลเดอร์ทั้งหมดในไดรฟ์ปัจจุบันเรียงลำดับตามลำดับจากน้อยไปหามากครั้งล่าสุดที่พวกเขาเข้าถึงและแสดงเส้นทางแบบเต็มและเวลาเข้าถึงล่าสุด
สิ่งนี้อาจใช้เวลาสักครู่โดยเฉพาะอย่างยิ่งในไดรฟ์ระบบหรือไดรฟ์อื่นที่มีไฟล์และ / หรือโฟลเดอร์จำนวนมาก อย่างไรก็ตามคุณไม่ควรใช้เกณฑ์นี้เพียงอย่างเดียวเมื่อเลือกล้างไฟล์ในไดรฟ์ระบบหรือในพื้นที่ที่จัดเก็บไฟล์โปรแกรมหรือข้อมูล - คุณอาจทำสิ่งต่าง ๆ ได้หากคุณทำเช่นนั้น ใช้สำหรับข้อมูลผู้ใช้เช่นเอกสารรูปภาพวิดีโอและอื่น ๆ
PowerShell ให้ตัวเลือกเพิ่มเติมมากมายสำหรับการทำงานกับข้อมูลด้วย เนื่องจาก @CharlesH ได้ครอบคลุมในสคริปต์ของเขาคุณสามารถดัมพ์เอาต์พุตเป็นไฟล์ CSV แทนที่จะปล่อยไว้ที่คอนโซล คุณยังสามารถทำการกรองบางอย่างตามขนาดไฟล์และคุณสมบัติอื่น ๆ หรือจัดรูปแบบข้อมูลเพื่อแสดงข้อมูลมากขึ้นหรือน้อยลงและแสดงในแบบที่เป็นมิตรกับคุณมากขึ้น
อีกวิธีหนึ่งคือการใช้ TCC จากhttp://jpsoft.com/all-downloads/downloads.html (เวอร์ชั่น LE ฟรี) นี่เป็นรุ่นที่ได้รับการอัพเกรดเป็นอย่างมากของ CMD ซึ่งช่วยให้คุณสามารถสั่งซื้อและเลือกตามวันที่ในแต่ละไฟล์เช่น:
dir /t:a /od - lists files in access time order;
dir /[da1980-1-1,2008-12-31] - selects files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31] /n - shows deletable files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31] - deletes files not accessed since 2008.
การเลือกช่วงสามารถใช้กับcopyและmoveคำสั่งได้หากคุณต้องการเก็บไฟล์แทนการลบทิ้ง
หาก (เช่นฉัน) คุณพบ PowerShell ซักหน่อยคุณอาจชอบสิ่งนี้
Get-ChildItem | Sort-Object LastAccessTime, 2. Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008}, 3. Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008} | Remove-Item -WhatIf, 4. Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008} | Remove-Item. ระบุว่า PowerShell ไม่มีค่าใช้จ่าย 100% มาพร้อมกับ Windows 7+ มีคำสั่งและพารามิเตอร์ที่โดยทั่วไปแล้วมนุษย์สามารถอ่านได้และอ่านได้ง่ายกว่าไวยากรณ์ในคำตอบนี้และมีระบบช่วยเหลือในตัวพร้อมชุมชนออนไลน์ สนับสนุนฉันไม่แน่ใจว่าเป็น "daunting" มากกว่า TCC
DIR /T:A /ODผู้ใช้ CMD อาจคุ้นเคย แต่ฉันไม่เห็นว่าDIRไวยากรณ์หรือDIRไวยากรณ์การกรองควรเป็นอย่างไร DEL /Sใน CMD ไม่สิ่งที่สมบูรณ์แตกต่างกันและค่าDIRมิได้DELมีฟังก์ชั่นการกรองพื้นเมืองคล้ายกับสิ่งที่จะใช้ที่นี่ที่ฉันรู้หรือสามารถที่จะหา
dirเรียกGet-ChildItem) PowerShell ยังสามารถใช้คำสั่ง CMD ดั้งเดิมและคำสั่งภายนอกอื่น ๆ ได้โดยตรงโดยไม่ต้องมีที่พักพิเศษใด ๆ
DEL /Sทำเช่นเดียวกันใน TCC เช่นเดียวกับใน CMD (ลบออกจากไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย) ฉันต้องเน้นว่าฉันไม่ได้พยายามบ่อนทำลายคำตอบของคุณในทางใดทางหนึ่ง แต่เพียงพยายามเสนอทางเลือกซึ่งอาจเป็นประโยชน์กับผู้ที่มีปัญหาที่เกี่ยวข้องและไม่สามารถใช้ PowerShell (เช่นใน Windows รุ่นก่อนหน้า)
Export-CSV!