Tôi dành nhiều thời gian giúp bạn bè, gia đình vấn đề máy tính, và phải nói trên hết vấn đề khác, vấn đề tôi thấy lặp lại là file temp và log ăn diện tích ổ cứng co lại và cuối cùng làm chậm hệ thống.
Thư mục temporary Internet files là thủ phạm thường gặp, nhưng giải pháp dễ dàng, vì chỉ cần thiết lập xóa file trong Internet Options trong control panel. Tuy nhiên, folder Windows temp phiền toái kia, hay những file log ứng dụng cứ tích lũy rác ngẫu nhiên không bao giờ bị xóa? Lúc đầu không gây vấn đề lớn, nhưng theo thời gian rác tích lũy thành đống lớn file cũ không phục vụ mục đích.
Ứng dụng viết tốt sẽ xóa log hoặc file temp không còn cần, nhưng quá nhiều chương trình không dọn dẹp đúng – để lại cho bạn, sau nhiều năm, máy tính rất bẩn. Tuy nhiên, nếu bạn biết thư mục log cụ thể – dù folder Windows temp hay folder log ứng dụng, như folder log thông báo antivirus, bạn có thể dùng Windows script sau để thường xuyên dọn file log cũ hơn vài ngày.
Dọn File Temp Với Windows Script
Nếu mới với Windows Scripting, xem nhanh hướng dẫn WSH tôi viết hồi trước. Có nhiều điều cool làm được với Windows Script, như thay đổi cài đặt mạng hoặc tự động lên lịch quét antivirus/malware.
Rõ ràng, nếu muốn lên lịch dọn dẹp thường xuyên để kiểm soát file log ứng dụng hoặc thư mục file tạm, Windows Script chắc chắn là giải pháp.
Viết Script Windows Dọn Dẹp
Script Windows này tập trung vào một thư mục cụ thể, duyệt toàn bộ tìm file có ngày sửa đổi cũ hơn vài ngày. Sau đó xóa file đó. Sau đó, script duyệt tất cả thư mục con và thực hiện cùng kiểm tra và dọn dẹp. Nghe phức tạp? Không. Phần đầu script trông như sau:
Option Explicit On Error Resume Next Dim oFSO, oFolder, sDirectoryPath Dim oFileCollection, oFile, sDir Dim iDaysOld iDaysOld = 3
Phần này khai báo biến hệ thống tệp để truy cập thư mục và file muốn dọn. Thiết lập biến "iDaysOld" báo cho script tuổi file bạn muốn giữ. Ở đây, tôi giữ file mới hơn 3 ngày.
Tiếp theo là phần dọn dẹp siêu đơn giản.
' ***** XÓA FILE CŨ TRONG FOLDER LOG *****
sDirectoryPath = "C:\Users\Owner\AppData\Local\Temp\"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
Next
Phần trên kết nối Windows File System, rồi kết nối thư mục định nghĩa bằng biến "sDirectoryPath". Vòng lặp đầu duyệt từng file trong thư mục, kiểm tra ngày sửa đổi so với tuổi file định nghĩa. Nếu cũ hơn 3 ngày, xóa file đó.
Điều này hay cho file, nhưng thư mục con trong folder Windows temp thì sao? Phần tiếp theo script sẽ duyệt qua tất cả thư mục con, thực hiện cùng thao tác file trên file trong đó.
For Each oSubFolder In oSubFolders
sDirectoryPath = "C:\Users\Owner\AppData\Local\Temp\" & oSubFolder
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
Next
If oSubFolder.Size = 0 Then oSubFolder.Delete(True)
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Next
Cuối cùng, đừng quên xóa object trong trường hợp không có thư mục con.
Set oFSO = Nothing Set oFolder = Nothing Set oFileCollection = Nothing Set oFile = Nothing WScript.Quit
Đơn giản như vậy. Script trên dọn dẹp bất kỳ thư mục nào bạn muốn. Viết script riêng cho từng thư mục muốn dọn thường xuyên, đặt "sDirectoryPath" thành thư mục muốn dọn sạch, lưu trong thư mục như "C:\temp\" hoặc "c:\vbscripts\". Khi script sẵn sàng, bạn sẵn sàng lên lịch chạy.
Lên Lịch Script Dọn Dẹp
Để lên lịch script dọn dẹp, Windows 7: vào Administrative Tools mở Task Scheduler.
Tạo Basic Task từ menu Action.
Thiết lập lịch lặp chạy khi bạn muốn dọn thư mục đó. Trong trường hợp tôi, chạy script vào trưa Chủ Nhật khi thường đăng nhập làm việc. Script chạy nền.
Cần thiết lập scheduled task cho mỗi windows script viết để dọn thư mục log/temp riêng.
Để test script sau khi tạo trong Task Schedule, click "Action" rồi "Run".
Bạn sẽ thấy file trong folder log/temp cũ hơn vài ngày (theo script) bị xóa tự động. Trong trường hợp tôi, dọn Windows Temp hàng tuần. Sau chạy script, thấy khoảng 45 file giảm còn 20 file mới nhất – bao gồm file trong thư mục con.
Việc duy trì máy tính thật đau đầu – và công việc càng khó khi hệ thống và ứng dụng liên tục ghi log hoặc tích lũy file rác temp. Script này đặc biệt hữu ích cho IT tech thường chạy batch job/script trên server tạo file log mới mỗi lần chạy. Chạy Windows Script thường xuyên dọn file log cũ, bạn viết file WSF như trên giữ thư mục log sạch – giữ lịch sử log muốn, xóa file cũ thật sự không cần.
Bạn nghĩ đến cách dùng sáng tạo cho script này? Bạn dọn temp/log thủ công – và script này có thể tiết kiệm công việc? Thử và chia sẻ suy nghĩ, phản hồi ở bình luận bên dưới!
Image Credit: Crane at Junk Yard via Shutterstock