Cara Menghapus Fail Lebih Lama dari N Hari Secara automatik di Windows

Windows 10 mempunyai ciri bawaan untuk mengosongkan ruang dengan menghapus fail lama di direktori %temp% dan folder Downloads . Tetapan Windows 10 mempunyai pilihan ("Penyimpanan") yang secara automatik membersihkan fail sementara yang tidak digunakan oleh aplikasi anda, fail dalam Muat turun yang belum diubah dalam x hari terakhir, atau fail yang terdapat di Tong Kitar Semula selama x hari.

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

Walau bagaimanapun, tetapan Pembersihan dan Penyimpanan Cakera hanya menargetkan folder %temp% dan Downloads . Untuk menghapus fail yang lebih tua dari jumlah hari tertentu di lokasi folder "khusus" seperti folder Documents anda, anda perlu menggunakan salah satu dari tiga kaedah berikut:

Cara Auto Padam Fail Lebih Lama daripada N Hari di Windows

Beberapa kaedah di bawah ini membolehkan anda menggunakan sifat "tarikh dibuat" atau "tarikh diubah" fail sebagai garis dasar untuk menentukan fail "lama", mengikut keperluan anda.

Kaedah 1. Padamkan Fail yang Lebih Lama daripada 'N' hari Menggunakan Penjelajah Fail

Dengan menggunakan Carian Windows, anda dapat dengan mudah mendapatkan senarai fail berdasarkan julat tarikh yang dipilih, atau fail yang lebih tua dari tarikh tertentu.

  1. Buka folder di mana anda ingin menghapus fail lama.
  2. Klik pada kotak carian atau tekan butang F3 pada papan kekunci.
  3. Klik pada butang Tarikh diubah, dan pilih salah satu pilihan lungsur turun, sebut "Minggu lalu".

  4. Windows Search akan menapis hasilnya dengan serta-merta. Pilih fail yang ingin anda hapus, dan tekan kekunci Padam pada papan kekunci anda.

Penting: Secara lalai, carian Windows mencari fail dalam folder semasa DAN semua subfolder. Untuk membatasi carian ke folder semasa sahaja, klik butang "Folder semasa" pada bar alat / pita Carian.

Pertanyaan Carian Lanjutan: Pengendali "Tarikh"

Sekiranya pilihan julat tarikh yang telah ditetapkan tidak sesuai dengan anda, anda boleh memasukkan pertanyaan carian tersuai. Di kotak carian, ketik berikut untuk menapis fail dari julat tarikh tersuai:

 dimodifikasi: 1/1/2017 .. 12/31/2017 

Ini mencari fail yang telah diubahsuai dalam julat tarikh tersebut. Anda juga boleh menggunakan datecreated: dateaccessed: atau date: (terutamanya untuk gambar kamera). Perhatikan date: pengendali menggunakan metadata tarikh (EXIF) yang dirakam oleh kamera.

BERKAITAN: Cara Mencari Fail yang Dibuat Antara Dua Tarikh di Windows

Untuk mencari fail yang belum diubah suai selepas 1 November 2017, gunakan simbol kurang dari ( < ) dengan datemodifed: operator, seperti di bawah:

 diubah suai data: <11/1/2017 

$config[ads_text6] not found

Pilih fail dari senarai dan hapuskannya.

Petua: Daripada menaip julat tarikh secara manual, taipkan datemodified: atau datecreated: atau dateaccessed: atau date: operator di kotak carian dan biarkan File Explorer menunjukkan pemilih tarikh untuk anda. Anda kemudian boleh memilih tarikh atau julat tarikh dari pop timbul. Untuk menentukan julat tarikh, pilih tarikh pertama dan seret kursor ke medan yang sesuai.

Sekiranya anda ingin menghapus fail lama secara automatik daripada melakukan pertanyaan carian setiap kali, anda perlu membuat fail kumpulan atau PowerShell.


Kaedah 2: Padam Fail Lebih Lama Dari Hari 'N' Menggunakan Prompt Perintah

ForFiles konsol ForFiles (di Windows 7, Windows 8, Windows 8.1 dan Windows 10) memilih fail atau sekumpulan fail dan melaksanakan perintah pada fail atau sekumpulan fail tersebut.

 Bantuan Forfiles - Suis baris arahan / P - Menunjukkan jalan untuk memulakan carian. Folder lalai adalah direktori kerja semasa (.). / S - Mengarahkan agar fail berulang menjadi subdirektori. Seperti "DIR / S". / D - Pilih fail dengan tarikh terakhir diubah. Contohnya, -365 bermaksud lebih dari setahun yang lalu, -30 bermaksud sebulan yang lalu. / C "command" - Menunjukkan perintah yang akan dilaksanakan untuk setiap fail. Rentetan arahan hendaklah dibungkus dalam petikan ganda. Perintah lalai adalah "cmd / c echo @file". Pemboleh ubah berikut boleh digunakan dalam rentetan arahan: @file - mengembalikan nama fail. @fname - mengembalikan nama fail tanpa pelanjutan. @ext - mengembalikan peluasan fail sahaja. @path - mengembalikan jalan penuh fail. @relpath - mengembalikan jalan relatif fail. @isdir - mengembalikan "BENAR" jika jenis fail adalah direktori, dan "SALAH" untuk fail. @fsize - mengembalikan ukuran fail dalam bait. @fdate - mengembalikan tarikh terakhir fail yang diubah suai. @ftime - mengembalikan masa terakhir fail yang diubah suai. 

Untuk melihat keseluruhan senarai argumen baris perintah yang disokong oleh alat ini, ketik FORFILES /? dalam Prompt Perintah.

Untuk mencari dan menghapus fail yang lebih tua dari jumlah hari tertentu menggunakan ForFiles, buka tetingkap Prompt Perintah, dan ketik salah satu arahan berikut:

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

-atau-

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

Di atas mengandaikan bahawa jalan folder adalah D:\My Scripts dan anda ingin memadam fail yang lebih tua dari 30 hari. Sesuaikan laluan folder dan jumlah hari sesuai dengan keperluan anda.

Anda tidak akan melihat mesej output jika arahan berjaya. Sekiranya tidak ada fail yang sesuai dengan kriteria yang ditentukan, anda akan melihat mesej KESALAHAN: Tidak ada fail yang dijumpai dengan kriteria carian yang ditentukan .

Petua tambahan: Untuk melakukan proses kering sebelum cuba menghapus fail, untuk memeriksa fail mana yang terpengaruh untuk kriteria yang ditentukan, ganti perintah del dengan echo, seperti di bawah:

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

-atau-

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

Secara pilihan, anda boleh membuat fail kumpulan dengan arahan di atas. Atau untuk menjalankan perintah secara automatik pada selang waktu yang ditentukan menggunakan Penjadual Tugas.

Jalankan arahan secara automatik Menggunakan Penjadual Tugas

  1. Lancarkan Penjadual Tugas.
  2. Di Task Scheduler, klik "Task Scheduler Library"
  3. Klik pautan "Buat tugas" di panel kanan.
  4. Dalam dialog "Buat Tugas", pilih tab "Umum".
  5. Sebutkan nama tugas, katakan "Hapus fail lama di Dokumen Saya"
  6. Klik pada tab Pencetus, dan klik Baru.
  7. Pilih "Pada jadual" dalam senarai drop-down di bawah kotak senarai turun "Mulakan tugas".
  8. Anda boleh memilih untuk menjalankan tugas tersebut setiap hari, mingguan atau bulanan. Sekiranya anda memilih mingguan, pilih hari dalam minggu yang anda mahukan tugasnya dicetuskan.
  9. Setelah selesai, klik butang OK.
  10. Klik tab "Tindakan", dan klik butang "Baru ...".
  11. Di tetingkap "Tindakan Baru", isikan yang berikut:
     Tindakan: Mulakan program Program / skrip: C: \ Windows \ System32 \ ForFiles.exe Tambahkan argumen (pilihan): / p "% userprofile% \ Documents" / s / d -30 / c "cmd / c del @file" 

  12. Klik OK.

Tugas baru dibuat yang ketika dijalankan, menghapus fail di folder Documents anda yang belum diubah dalam 30 hari terakhir.


Kaedah 3: Padamkan fail yang lebih tua dari N hari menggunakan Skrip

Pengguna forum Spiceworks mempunyai VBScript yang dapat menghapus fail yang lebih tua dari N bilangan hari pada jalur folder yang ditentukan secara berulang. Berikut adalah skrip ringkas:

 Pada Kesalahan Resume Set seterusnya oFileSys = WScript.CreateObject ("Scripting.FileSystemObject") sRoot = "C: \ Path To Old Files" 'Path root untuk mencari fail hari ini = Tarikh nMaxFileAge = 3' Fail lebih tua dari ini (dalam hari) akan dihapus fungsi DeleteFiles (sRoot) DeleteFiles (ByVal sFolder) Set oFolder = oFileSys.GetFolder (sFolder) Tetapkan aFiles = oFolder.Files Set aSubFolders = oFolder.SubFolders Untuk Setiap fail dalam aFiles dFileCreated = Format.DateTime (FileDateTime) ) Jika DateDiff ("d", dFileCreated, hari ini)> nMaxFileAge Kemudian fail. Hapus (Benar) Tamatkan Jika Seterusnya Untuk Setiap folder dalam aSubFolders DeleteFiles (folder.Path) Fungsi Akhir Seterusnya 

Sumber: Padam Fail Lama dan Subfolder Kosong - Pusat Skrip - Spiceworks

$config[ads_text6] not found

PENTING! Skrip di atas mengambil kira sifat "Tarikh Dibuat" daripada item dan bukannya "Tarikh Diubah Terakhir". Sekiranya anda ingin menghapus fail yang belum diubah dalam N hari terakhir, ubah baris berikut dalam skrip:

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

ke

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

Ia membersihkan fail yang lebih tua dari 3 hari. Yang perlu anda lakukan hanyalah mengubah jalur folder & parameter usia fail maksimum seperti yang diperlukan dalam skrip, simpan dengan sambungan .vbs dan jalankan. Perhatikan bahawa skrip berfungsi pada folder dan sub-folder yang ditentukan secara berulang.

Berikut adalah skrip lain yang menghapus fail yang lebih tua dari hari N, dan secara automatik membersihkan sub-folder kosong secara berulang. Lihat Hapus fail yang lebih tua dari usia maksimum (dalam beberapa hari) - Pusat Skrip - Spiceworks

BERKAITAN: Cara Mencari dan Menghapus Folder Kosong dengan Cepat di Windows


Kaedah 4: Padam fail yang lebih tua dari 'n' hari Menggunakan PowerShell

Pilihan ketiga adalah menggunakan PowerShell, yang mempunyai cmdlet berguna untuk mencari dan menghapus fail lama.

Mulakan PowerShell ( powershell.exe), dan taipkan arahan berikut:

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

Contoh:

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

Untuk menggunakan jalan yang mengandungi pemboleh ubah persekitaran seperti %userprofile%\documents, gunakan sintaks di bawah:

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

(Catatan: Nama folder dalam contoh adalah folder Documents profil pengguna anda. Ubah nama folder dan jalur sesuai dengan keperluan anda.)

Oleh kerana kami menggunakan parameter -File, ia berfungsi hanya untuk fail. Oleh itu, sub-folder yang belum ditulis dalam n hari terakhir dihalang daripada dihapuskan.

Perintah di atas mempunyai tiga bahagian:

  1. Cmdlet Get-ChildItem mendapat senarai fail dalam folder Dokumen anda.
  2. Kemudian output disalurkan ke Where-Object cmdlet sehingga penyaringan dilakukan, memilih hanya fail yang belum diubah dalam x hari terakhir (dalam contoh ini, 30 days ).
  3. Akhirnya, kami memasukkan output ke cmdlet Remove-Item, yang seterusnya akan menghapus fail lama yang dikembalikan oleh dua cmdlet sebelumnya.

Petua 1: Senaraikan fail yang sepadan, jangan hapuskannya?

Untuk menyenaraikan fail dan folder yang sepadan tanpa menghapusnya, lepaskan | Remove-Item | Remove-Item .

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

Petua 2: Menahan kesalahan semasa menghapus item

Untuk menekan mesej ralat (ketika mengakses atau menghapus item) agar tidak -ErrorAction SilentlyContinue 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 SilentlyContinue-Force 

Padamkan fail lama dan juga folder

Perhatikan bahawa arahan di atas hanya menghapus fail lama tetapi bukan sub-folder yang belum ditulis dalam x hari terakhir. Untuk membuang folder lama, lepaskan argumen -File dari perintah yang dijelaskan sebelumnya.

Contoh:

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

(Rujuk: Dapatkan dokumentasi cmdlet Get-ChildItem di laman Microsoft)

Penting: Parameter -Recurse mengarahkan PowerShell untuk mendapatkan fail secara berulang (dalam sub-direktori). Untuk mengelakkan mencari fail dalam subfolder, -Recurse pilihan -Recurse sehingga hanya folder semasa yang diproses.

$config[ads_text6] not found

Artikel Berkaitan