Cara Menghapus File yang Lebih Tua dari N Hari Secara Otomatis di Windows

Windows 10 memiliki fitur bawaan untuk mengosongkan ruang dengan menghapus file lama di direktori %temp% dan folder Downloads . Pengaturan Windows 10 memiliki opsi ("Penyimpanan") yang secara otomatis menghapus file sementara yang tidak digunakan aplikasi Anda, file di Unduhan yang belum dimodifikasi dalam x hari terakhir, atau file yang berada di Recycle Bin selama x hari.

Juga, alat Disk Cleanup membersihkan file di direktori %temp% yang belum diakses dalam 7 hari terakhir.

Namun, pengaturan Disk Cleanup and Storage hanya menargetkan %temp% dan folder Downloads . Untuk menghapus file yang lebih lama dari jumlah hari tertentu di lokasi folder "khusus" seperti folder Documents Anda, Anda perlu menggunakan salah satu dari tiga metode ini:

Cara Menghapus File Secara Otomatis Lebih Tua dari N Hari di Windows

Beberapa metode di bawah ini memungkinkan Anda menggunakan properti file "tanggal dibuat" atau "diubah tanggal" sebagai data dasar untuk menentukan file "lama", sesuai kebutuhan Anda.

Metode 1. Hapus File yang Lebih Lama dari 'N' hari Menggunakan File Explorer

Menggunakan Pencarian Windows, Anda dapat dengan mudah mendapatkan daftar file berdasarkan rentang tanggal yang dipilih, atau file yang lebih tua dari tanggal tertentu.

  1. Buka folder tempat Anda ingin menghapus file yang lebih lama.
  2. Klik pada kotak pencarian atau tekan tombol F3 pada keyboard.
  3. Klik pada tombol Tanggal diubah, dan pilih salah satu opsi tarik-turun, ucapkan “Minggu lalu”.

  4. Pencarian Windows akan menyaring hasil secara instan. Pilih file yang ingin Anda hapus, dan tekan tombol Delete di keyboard Anda.

Penting: Secara default, pencarian Windows mencari file di folder saat ini DAN semua subfolder. Untuk membatasi pencarian hanya ke folder saat ini, klik tombol "Folder saat ini" pada toolbar Pencarian / pita.

Permintaan Pencarian Lanjutan: Operator "Tanggal"

Jika opsi rentang tanggal yang ditentukan sebelumnya tidak sesuai dengan Anda, Anda dapat mengetikkan permintaan pencarian khusus. Di kotak pencarian, ketik berikut ini untuk memfilter file dari rentang tanggal khusus:

 datemodified: 1/1/2017 .. 12/31/2017 

Ini menemukan file yang telah dimodifikasi selama rentang tanggal tersebut. Anda juga dapat menggunakan datecreated: dateaccessed: atau date: (terutama untuk gambar kamera). Perhatikan date: operator menggunakan metadata tanggal (EXIF) yang direkam oleh kamera.

TERKAIT: Cara Mencari File yang Dibuat Antara Dua Tanggal di Windows

Untuk menemukan file yang belum dimodifikasi setelah 1 November 2017, gunakan simbol kurang dari ( < ) dengan operator datemodifed: seperti di bawah ini:

 datemodified: <11/1/2017 

Pilih file dari daftar dan hapus.

Tip: Alih-alih mengetik rentang tanggal secara manual, ketik datemodified: atau datecreated: atau dateaccessed: atau date: operator di kotak pencarian dan biarkan File Explorer menunjukkan pemilih tanggal untuk Anda. Anda kemudian dapat memilih tanggal atau rentang tanggal dari jendela sembul. Untuk menentukan rentang tanggal, pilih tanggal pertama dan seret kursor ke bidang yang sesuai.

Jika Anda ingin menghapus file yang lebih lama secara otomatis daripada melakukan permintaan pencarian setiap kali, Anda perlu membuat file batch atau PowerShell.


Metode 2: Hapus File yang Lebih Lama Daripada 'N' Hari Menggunakan Prompt Perintah

Alat konsol ForFiles (di Windows 7, Windows 8, Windows 8.1 dan Windows 10) memilih file atau serangkaian file dan mengeksekusi perintah pada file atau set file tersebut.

 Bantuan Forfiles - Sakelar baris perintah / P - Menunjukkan jalur untuk mulai mencari. Folder default adalah direktori kerja saat ini (.). / S - Menginstruksikan forfile untuk kembali ke subdirektori. Seperti "DIR / S". / D - Pilih file dengan tanggal modifikasi terakhir. Misalnya, -365 berarti lebih dari setahun yang lalu, -30 berarti sebulan yang lalu. / C "command" - Mengindikasikan perintah untuk mengeksekusi untuk setiap file. String perintah harus dibungkus dengan tanda kutip ganda. Perintah default adalah "cmd / c echo @file". Variabel berikut dapat digunakan dalam string perintah: @ file - mengembalikan nama file. @fname - mengembalikan nama file tanpa ekstensi. @ext - hanya mengembalikan ekstensi file. @path - mengembalikan path lengkap file. @relpath - mengembalikan jalur relatif file. @ isdir - mengembalikan "BENAR" jika jenis file adalah direktori, dan "SALAH" untuk file. @ ukuran - mengembalikan ukuran file dalam byte. @tanggal - mengembalikan tanggal modifikasi terakhir dari file. @ftime - mengembalikan waktu file terakhir yang dimodifikasi. 

Untuk melihat seluruh daftar argumen baris perintah yang didukung oleh alat ini, ketik FORFILES /? di Command Prompt.

$config[ads_text6] not found

Untuk menemukan dan menghapus file yang lebih lama dari beberapa hari menggunakan ForFiles, buka jendela Command Prompt, dan ketik salah satu dari perintah berikut:

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c del @path" 

-atau-

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c del @file" 

Di atas mengasumsikan bahwa path folder adalah D:\My Scripts dan Anda ingin menghapus file yang lebih lama dari 30 hari. Sesuaikan jalur folder dan jumlah hari sesuai dengan kebutuhan Anda.

Anda tidak akan melihat pesan keluaran jika perintah berhasil. Jika tidak ada file yang cocok dengan kriteria yang ditentukan, Anda akan melihat pesan ERROR: Tidak ada file yang ditemukan dengan kriteria pencarian yang ditentukan .

Kiat tambahan: Untuk melakukan dry run sebelum mencoba menghapus file, untuk memeriksa file mana yang terpengaruh untuk kriteria yang ditentukan, ganti del perintah dengan echo, seperti di bawah ini:

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c echo @path" 

-atau-

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c echo @file" 

Secara opsional, Anda dapat membuat file batch dengan perintah di atas. Atau untuk secara otomatis menjalankan perintah pada interval yang ditentukan menggunakan Penjadwal Tugas.

Jalankan perintah secara otomatis Menggunakan Penjadwal Tugas

  1. Luncurkan Penjadwal Tugas.
  2. Di Penjadwal Tugas, klik "Perpustakaan Penjadwal Tugas"
  3. Klik tautan "Buat tugas" di panel kanan.
  4. Dalam dialog "Buat Tugas", pilih tab "Umum".
  5. Sebutkan nama tugas, ucapkan “Hapus file yang lebih lama di Dokumen Saya”
  6. Klik pada tab Pemicu, dan klik Baru.
  7. Pilih "Sesuai jadwal" di daftar turun bawah di bawah kotak daftar turun bawah "Mulai tugas".
  8. Anda dapat memilih untuk menjalankan tugas setiap hari, mingguan atau bulanan. Jika Anda memilih setiap minggu, pilih hari di minggu kapan Anda ingin tugas tersebut dipicu.
  9. Setelah selesai, klik tombol OK.
  10. Klik tab "Actions", dan klik tombol "New ...".
  11. Di jendela "Aksi Baru", isi yang berikut ini:
     Tindakan: Mulai program Program / skrip: C: \ Windows \ System32 \ ForFiles.exe Tambah argumen (opsional): / p "% userprofile% \ Documents" / s / d -30 / c "cmd / c del @file" 

  12. Klik OK.

Tugas baru dibuat yang ketika dijalankan, menghapus file di folder Documents Anda yang belum dimodifikasi dalam 30 hari terakhir.


Metode 3: Hapus file yang lebih lama dari N hari menggunakan Script

Pengguna forum Spiceworks memiliki skrip VBS yang dapat menghapus file yang lebih lama dari N jumlah hari pada lintasan folder yang ditentukan secara rekursif. Berikut ini skrip sederhana:

 On Error Resume Next Set oFileSys = WScript.CreateObject ("Scripting.FileSystemObject") sRoot = "C: \ Path To Old Files" 'Path root untuk mencari file hari ini = Tanggal nMaxFileAge = 3' File lebih tua dari ini (dalam hari) akan dihapus DeleteFiles (sRoot) Fungsi DeleteFiles (ByVal sFolder) Set oFolder = oFileSys.GetFolder (sFolder) Set aFiles = oFolder.Files Atur aSubFolders = oFolder.SubFolders Untuk Setiap file dalam fileFile dFileCreated = FormatDateTime, " ) Jika DateDiff ("d", dFileCreated, hari ini)> nMaxFileAge Kemudian file. Hapus (True) End If Next Untuk Setiap folder di aSubFolders DeleteFiles (folder.Path) Next End Function 

Sumber: Hapus File Lama dan Subfolder Kosong - Pusat Skrip - Spiceworks

PENTING! Skrip di atas mempertimbangkan properti "Tanggal Dibuat" dari barang alih-alih "Tanggal Terakhir Dimodifikasi". Jika Anda ingin menghapus file yang belum dimodifikasi dalam N hari terakhir, ubah baris berikut dalam skrip:

 dFileCreated = FormatDateTime (file.DateCreated, "2") 

untuk

 dFileCreated = FormatDateTime (file.DateLastModified, "2") 

Ini membersihkan file yang lebih lama dari 3 hari. Yang perlu Anda lakukan adalah memodifikasi lintasan folder & parameter usia file maks seperti yang diperlukan dalam skrip, simpan dengan ekstensi .vbs dan jalankan. Perhatikan bahwa skrip bekerja pada folder dan sub-folder yang ditentukan secara rekursif.

Berikut ini adalah skrip lain yang menghapus file yang lebih lama dari N hari, dan secara otomatis menghapus sub-folder kosong secara rekursif. Lihat Menghapus file yang lebih tua dari usia maks (dalam beberapa hari) - Pusat Skrip - Spiceworks

$config[ads_text6] not found

TERKAIT: Cara Menemukan dan Menghapus Folder Kosong dengan Cepat di Windows


Metode 4: Hapus file yang lebih lama dari 'n' hari Menggunakan PowerShell

Opsi ketiga adalah menggunakan PowerShell, yang memiliki cmdlet yang berguna untuk menemukan dan menghapus file lama.

Mulai PowerShell ( powershell.exe), dan ketik perintah berikut:

 Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item-Force 

Contoh:

 Get-ChildItem -Path "D: \ Reports" -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item-Force 

Untuk menggunakan jalur yang berisi variabel lingkungan seperti %userprofile%\documents, gunakan sintaksis di bawah ini:

 Dapatkan-ChildItem -Path "$ env: userprofile \ document" -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item-Force 

(Catatan: Nama folder dalam contoh ini adalah folder Documents profil pengguna Anda. Ubah nama folder dan jalurnya sesuai kebutuhan Anda.)

Karena kami menggunakan parameter- -File, ini hanya berfungsi untuk file. Jadi, sub-folder yang belum ditulis dalam n hari terakhir dicegah dihapus.

Perintah di atas memiliki tiga bagian:

  1. Cmdlet Get-ChildItem mendapatkan daftar file di folder Documents Anda.
  2. Kemudian output disalurkan ke cmdlet Where-Object sehingga penyaringan dilakukan, memilih hanya file yang belum dimodifikasi dalam x jumlah hari terakhir (dalam contoh ini, 30 days ).
  3. Terakhir, kami mem-pipkan output ke cmdlet Remove-Item, yang pada gilirannya menghapus file-file lama yang dikembalikan oleh dua cmdlet sebelumnya.

Kiat 1: Daftar file yang cocok, jangan hapus?

Untuk membuat daftar file dan folder yang cocok tanpa menghapusnya, jatuhkan | Remove-Item Sakelar | Remove-Item .

 Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} 

Tip 2: Menekan kesalahan saat menghapus item

Untuk menekan pesan kesalahan (saat mengakses atau menghapus item) agar tidak ditampilkan di konsol, tambahkan parameter -ErrorAction SilentlyContinue .

 Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -ErrorAction SilentContinue -Force 

Hapus file lama serta folder

Perhatikan bahwa perintah di atas hanya menghapus file-file lama tetapi bukan sub-folder yang belum ditulis dalam x hari terakhir. Untuk menghapus folder lama, letakkan argumen -File di dari perintah yang dijelaskan sebelumnya.

Contoh:

 Dapatkan-ChildItem -Path "$ env: userprofile \ document" -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item-Force 

(Lihat: dokumentasi cmdlet Get-ChildItem di situs Microsoft)

Penting: Parameter -Recurse mengarahkan PowerShell untuk mendapatkan file secara rekursif (dalam sub-direktori). Untuk mencegah pencarian file dalam subfolder, hapus opsi -Recurse sehingga hanya folder saat ini yang diproses.

Artikel Terkait