1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Cách lập chỉ mục File ?

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi Bc_81, 30/8/19.

  1. Bc_81

    Bc_81 Thành viên mới
    • 1/6

    Tham gia ngày:
    30/8/19
    Bài viết:
    2
    Đã được thích:
    0
    Em thấy những chiếc máy tính công cộng (đặc biệt là máy tính dùng chung trong phòng tin của các trường học) thường có rất nhiều file rác do nhiều người dùng và không phải ai cũng tự ý thức được việc đó.
    Em có bắt đầu tự học Autoit để có thể tạo một phần mềm tự xóa file theo lịch hẹn trước.
    Thuật toán của em là lấy thông tin file mỗi khi xuất hiện hộp thoại Save As, ghi nó vào một cái notepad và kèm theo lịch tự xóa do mình nhập ( Em chưa rành GUI lắm nên đoạn đấy em dùng InsertBox ).
    Vấn đề là nếu trong quá trình sử dụng mà người dùng thay đổi tên, đường dẫn, hoặc định dạng của file thì nhưng thông tin trong notepad khi sẽ không còn đúng và không thể tự xóa file được nữa, cách duy nhất em nghĩ được là lập chỉ mục file để tìm kiếm.
    Mong mọi người góp ý và giúp em. Em cảm ơn nhiều !

    Đấy là những gì em đã làm được:
    Mã (AutoIt):
    ; Chỉ định thư viện
    #include <GuiButton.au3>
    #include <GuiEdit.au3>

    ; Khai báo biến
    Global $f_path, $f_name, $f_format

    ; Các câu lệnh
    HotKeySet("!#{f12}","quit")
    While 1
        Sleep(1000)
        $f_path = ""
        $f_name = ""
        $f_format = ""
        mf_inf()
        Sleep(500)
        If ($f_path <> "") And (Not WinExists("Save As")) Then
            path_cr()
            mf_cr()
        EndIf
    WEnd

    ; Định nghĩa hàm
    Func mf_inf()
        $sa = WinWaitActive("Save As")
        $sa_savebutton = ControlGetHandle($sa, "", "[CLASS:Button; INSTANCE:2]")
        Do
            $uof_name = StringRegExp(ControlGetText($sa,"","[CLASS:Edit; INSTANCE:1]"),"\.",0)
            $uof_format = StringRegExp(ControlGetText($sa,"","[CLASS:ComboBox; INSTANCE:2]"),"\*\.\*",0)
            Select
                Case (($uof_format = 1) And ($uof_name = 0))
                    _GUICtrlButton_Enable($sa_savebutton,False)
                Case Else
                    _GUICtrlButton_Enable($sa_savebutton,True)
            EndSelect
            If (_GUICtrlButton_GetState($sa_savebutton) == 620) Then
                $f_path = ControlGetText($sa, "","[CLASS:ToolbarWindow32; INSTANCE:4]")
                $f_name = ControlGetText($sa,"","[CLASS:Edit; INSTANCE:1]")
                $f_format = ControlGetText($sa,"","[CLASS:ComboBox; INSTANCE:2]")
                ExitLoop
            EndIf
        Until (Not WinExists($sa))
    EndFunc
    Func path_cr()
        $f_path = StringReplace($f_path,"Address: ","")
            If $f_path = ("3D Objects" Or "Desktop" Or "Documents" Or "Downloads" Or "Music" Or "Pictures" Or "Videos") Then
                $f_path = "C:\Users\" &@UserName &"\" &$f_path &"\"
            EndIf
            If (StringRegExp($f_name,"\.",0) = 1) Then
                If (StringRegExp($f_format,"\*\.\*",0) = 1) Then
                    $f_format = ""
                    If (StringRight($f_name,1) = ".") Then
                        $f_name = StringReplace($f_name,".","")
                    EndIf
                Else
                    If StringReverse(StringRegExp($f_format,"\.(.*?)\)",1)[0]) = StringSplit(StringReverse($f_name),".")[1] Then
                        $f_format = ""
                    Else
                        $f_format = StringRegExp($f_format,"\*(.*?)\)",1)[0]
                    EndIf
                EndIf
            Else
                $f_format = StringRegExp($f_format,"\*(.*?)\)",1)[0]
            EndIf
    EndFunc
    Func mf_cr()
        ; Thay cái này bằng GUI
        $year = InPutBox("FIU","Xóa file vào Năm:")
        $month = InPutBox("FIU","Xóa file vào Tháng:")
        $date = InPutBox("FIU","Xóa file vào Ngày:")
        ; ---------------------
        $mf_path = @ScriptDir &"\Memory.txt"
        FileOpen($mf_path,1)
        FileWrite($mf_path,$year&$month&$date &@CRLF &$f_path&$f_name&$f_format &@CRLF)
    EndFunc
    Func quit()
        Exit
    Endfunc


     
     
  2. Butch

    Butch Butch đẹp trai
    • 8/11

    Tham gia ngày:
    12/8/19
    Bài viết:
    32
    Đã được thích:
    11
    Nơi ở:
    Tom And Jerry
    máy tính công cộng thì kệ họ đi :D cách nhanh nhất xD
     
  3. Butch

    Butch Butch đẹp trai
    • 8/11

    Tham gia ngày:
    12/8/19
    Bài viết:
    32
    Đã được thích:
    11
    Nơi ở:
    Tom And Jerry
    mình cũng k hiểu file như thế nào là rác đối với bạn,
    - bạn có thể lấy hết file trong toàn folder sau đó so sánh với những file bạn không cho là "rác" còn lại del all :D đó cũng là 1 cách
     
  4. systemerror

    systemerror Phạm Huy Thiên
    • 8/11

    Tham gia ngày:
    23/2/19
    Bài viết:
    70
    Đã được thích:
    23
    Máy tính công cộng thì thường đóng băng ổ cứng mà nhỉ :v
     
  5. Bc_81

    Bc_81 Thành viên mới
    • 1/6

    Tham gia ngày:
    30/8/19
    Bài viết:
    2
    Đã được thích:
    0
    Cảm ơn bạn :v mk sẽ thử xem sao
     

Chia sẻ trang này

Đang tải...