Saya ingin menghapus hanya file yang dibuat lebih dari 15 hari yang lalu di folder tertentu. Bagaimana saya bisa melakukan ini menggunakan PowerShell?
powershell
powershell-2.0
powershell-3.0
pengguna2470170
sumber
sumber
Jawaban:
Jawaban yang diberikan hanya akan menghapus file (yang memang merupakan apa yang ada dalam judul posting ini), tetapi di sini ada beberapa kode yang pertama-tama akan menghapus semua file yang lebih lama dari 15 hari, dan kemudian secara rekursif menghapus direktori kosong yang mungkin tersisa. dibelakang. Kode saya juga menggunakan
-Force
opsi untuk menghapus file yang tersembunyi dan hanya-baca juga. Juga, saya memilih untuk tidak menggunakan alias sebagai OP baru untuk PowerShell dan mungkin tidak mengerti apagci
,?
,%
, dll.Dan tentu saja jika Anda ingin melihat file / folder apa yang akan dihapus sebelum benar-benar menghapusnya, Anda bisa menambahkan
-WhatIf
sakelar keRemove-Item
panggilan cmdlet di akhir kedua baris.Kode yang ditampilkan di sini kompatibel dengan PowerShell v2.0, tetapi saya juga menunjukkan kode ini dan kode PowerShell v3.0 yang lebih cepat sebagai fungsi berguna yang dapat digunakan kembali di blog saya .
sumber
cukup sederhananya (PowerShell V5)
sumber
Cara lain adalah dengan mengurangi 15 hari dari tanggal saat ini dan membandingkannya
CreationTime
dengan nilai itu:sumber
Pada dasarnya, Anda beralih pada file di bawah jalur yang diberikan, kurangi
CreationTime
setiap file yang ditemukan dari waktu saat ini, dan bandingkan denganDays
properti hasil. The-WhatIf
switch akan memberitahu Anda apa yang akan terjadi tanpa benar-benar menghapus file (file mana yang akan dihapus), menghapus saklar untuk benar-benar menghapus file:sumber
Coba ini:
sumber
-recurse
terlalu banyak, bukan? Daftar dir adalah secara rekursif, penghapusan item tidak boleh termasuk anak-anak, kan?Skrip Esperento57 tidak berfungsi di versi PowerShell yang lebih lama. Contoh ini tidak:
sumber
Alternatif lain (15. diketik ke [rentang waktu] secara otomatis):
sumber
Ini akan menghapus folder lama dan isinya.
sumber
Jika Anda mengalami masalah dengan contoh di atas pada kotak Windows 10, coba ganti
.CreationTime
dengan.LastwriteTime
. Ini berhasil untuk saya.sumber
LastwriteTime
tidak sama denganCreationTime
,LastwriteTime
diperbarui setiap kali file diubah.sumber
$Files
ini kosong itu tidak akan masuk foreach pernyataan. Anda harus menempatkan foreach dalam pernyataan if .