Trong công việc văn phòng và giảng dạy hàng ngày, việc sắp xếp và quản lý hàng trăm tập tin như bài tập, hóa đơn hay tài liệu thường tốn rất nhiều thời gian. Trong bài viết này, bạn sẽ học cách viết kịch bản AutoIt để quét thư mục và đổi tên hàng loạt tập tin một cách tự động, chính xác theo định dạng chuẩn.
Khái niệm
Đổi tên file hàng loạt (Batch Rename) là thao tác tự động thay đổi tên của nhiều tập tin trong cùng một hoặc nhiều thư mục dựa trên các quy tắc xác định. Trong AutoIt, thao tác này được thực hiện thông qua việc tìm kiếm các tập tin trong thư mục bằng các hàm duyệt file và cập nhật tên mới bằng hàm di chuyển/đổi tên file tích hợp sẵn.
Cú pháp
Để thực hiện tìm kiếm và đổi tên tập tin trong AutoIt, chúng ta sử dụng các hàm cơ bản sau:
FileFindFirstFile("path\pattern"): Khởi tạo tìm kiếm tập tin theo đường dẫn và mẫu (ví dụ: "C:\Docs\*.txt"). Hàm trả về một handle (mã quản lý) tìm kiếm.FileFindNextFile($search): Trả về tên của tập tin tiếp theo khớp với điều kiện tìm kiếm từ handle$search.FileClose($search): Đóng handle tìm kiếm sau khi hoàn thành công việc duyệt file.FileMove("source", "destination" [, flag]): Đổi tên hoặc di chuyển tập tin từ đường dẫn nguồnsourcesang đường dẫn đíchdestination. Cờflagtùy chọn (ví dụ: 1 = ghi đè nếu file đích đã tồn tại).
Ví dụ minh họa
Dưới đây là đoạn mã AutoIt tự động quét thư mục C:\TaiLieu, tìm tất cả các file có đuôi .txt và thực hiện đổi tên hàng loạt bằng cách thêm tiền tố Chuan_ vào trước tên file cũ:
#include <MsgBoxConstants.au3>; Khai báo đường dẫn thư mục làm việcLocal $sPath = "C:\TaiLieu\"Local $sSearchPattern = $sPath & "*.txt"; Bắt đầu tìm kiếm fileLocal $hSearch = FileFindFirstFile($sSearchPattern); Kiểm tra xem có tìm thấy file nào khôngIf $hSearch = -1 Then MsgBox($MB_SYSTEMMODAL, "Thông báo", "Không tìm thấy tập tin phù hợp.") ExitEndIfLocal $sFileName = ""Local $sNewFileName = ""While 1 ; Lấy tên tập tin tiếp theo $sFileName = FileFindNextFile($hSearch) If @error Then ExitLoop ; Thoát vòng lặp khi hết file ; Tạo tên mới với tiền tố $sNewFileName = "Chuan_" & $sFileName ; Thực hiện đổi tên tập tin bằng FileMove FileMove($sPath & $sFileName, $sPath & $sNewFileName)WEnd; Đóng handle tìm kiếmFileClose($hSearch)MsgBox($MB_SYSTEMMODAL, "Hoàn thành", "Đã đổi tên hàng loạt tập tin thành công!")Lỗi thường gặp
- Không đóng Handle tìm kiếm: Quên gọi hàm
FileClose($hSearch)sau khi kết thúc vòng lặp duyệt file có thể dẫn đến việc chiếm dụng tài nguyên hệ thống. - Đường dẫn file không chính xác: Khi truyền tham số vào hàm
FileMove, nếu quên ghép đường dẫn thư mục ($sPath) với tên file ($sFileName), chương trình sẽ không tìm thấy tập tin cần đổi tên. - Ghi đè file không mong muốn: Đổi tên file trùng với một file đã tồn tại trong thư mục mà sử dụng cờ ghi đè có thể làm mất dữ liệu quan trọng.
Bài tập/thực hành
Hãy viết một kịch bản AutoIt để quét thư mục chứa bài tập hoặc hóa đơn của bạn, tìm tất cả các file có định dạng .doc hoặc .pdf và đổi tên chúng bằng cách gắn thêm ngày tháng hiện tại vào sau tên file.
Tổng kết
Việc làm chủ các hàm làm việc với tập tin như FileFindFirstFile, FileFindNextFile và FileMove trong AutoIt sẽ giúp bạn dễ dàng xây dựng các công cụ tự động hóa công việc xử lý dữ liệu hàng ngày. Phương pháp này giúp tiết kiệm đáng kể thời gian và hạn chế tối đa sai sót khi quản lý khối lượng lớn tài liệu văn phòng.
Nguồn tham khảo
- How to rename a file - AutoIt General Help and Support
- AutoIt Lesson 14: File Search and Batch Rename Script - LinkedIn
- Rename - Quickly Batch File Renaming in Linux
- Read and rename files! - AutoIt General Help and Support
- Three ways to bulk rename files | Mikkel Paulson
Nhận xét
Đăng nhận xét