Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 10.24 KB | None | 0 0
  1. #cs ----------------------------------------------------------------------------
  2.  
  3.  AutoIt Version: 3.3.6.1
  4.  Author:         DropSQL
  5.  
  6.  Script Function:
  7.     Скрипт удаляет файлы/папки указаным регулярным выржением задаюшим его имя
  8.  
  9. #ce ----------------------------------------------------------------------------
  10.  
  11. #include <ButtonConstants.au3>
  12. #include <ComboConstants.au3>
  13. #include <EditConstants.au3>
  14. #include <GUIConstantsEx.au3>
  15. #include <GUIListBox.au3>
  16. #include <StaticConstants.au3>
  17. #include <WindowsConstants.au3>
  18. #Include <File.au3>
  19. #Include <Array.au3>
  20. #include <ListviewConstants.au3>
  21. #Include <GuiListView.au3>
  22. Opt("GUIResizeMode", $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  23. #Region
  24. $delSelection = "Удалить выделенное"
  25. $break = "Остановить"
  26. $pf = "Папка и файл"
  27. $p = "Папка"
  28. $f = "Файл"
  29. #EndRegion
  30. #Region
  31. $Form1 = GUICreate("Удаление файлов или папок", 633, 460, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
  32. Global $name = GUICtrlCreateInput("", 144, 8, 482, 21)
  33. GUICtrlSetResizing($name, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  34. $Label1 = GUICtrlCreateLabel("Введите имя файла", 8, 0, 133, 20)
  35. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  36. $Label1 = GUICtrlCreateLabel("Проверяется:", 8, 142, 103, 20)
  37. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  38. Global $status = GUICtrlCreateInput("", 144, 142, 483, 21)
  39. GUICtrlSetResizing($status, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  40. Global $count = GUICtrlCreateInput("", 500, 165, 126, 21)
  41. GUICtrlSetResizing($count, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  42. Global $countSt = GUICtrlCreateInput("", 144, 165, 351, 21)
  43. GUICtrlSetResizing($countSt, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  44. Global $type = GUICtrlCreateCombo($pf, 144, 32, 482, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
  45. GUICtrlSetResizing($type, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  46. GUICtrlSetData($type, $p & "|" & $f)
  47. Global $selectType = GUICtrlCreateButton($pf, 512, 56, 115, 25)
  48. GUICtrlSetResizing($selectType, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  49. Global $emptyRec = GUICtrlCreateCheckbox("Очистить корзину", 400, 118, 113, 17)
  50. GUICtrlSetResizing($emptyRec, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  51. Global $vvv = GUICtrlCreateCheckbox("Выделить всё", 400, 90, 113, 17)
  52. GUICtrlSetResizing($vvv, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  53. $Label3 = GUICtrlCreateLabel("Выбраная папка:", 8, 56, 114, 20)
  54. GUICtrlSetFont($Label3, 10, 400, 0, "MS Sans Serif")
  55. Global $path = GUICtrlCreateInput("", 144, 56, 361, 21)
  56. GUICtrlSetData($path, @DocumentsCommonDir)
  57. GUICtrlSetResizing($path, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  58. GUICtrlSetState(-1, $GUI_DISABLE)
  59. Global $result = GUICtrlCreateListView("", 144, 188, 482, 279-13, BitOR($LVS_REPORT,$LVS_NOSORTHEADER,$LVS_SHOWSELALWAYS))
  60. _GUICtrlListView_InsertColumn($result, 0, "Путь", 414)
  61. _GUICtrlListView_InsertColumn($result, 1, "Тип", 46)
  62. GUICtrlSetResizing($result, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  63. Global $scan = GUICtrlCreateButton("Сканировать", 512, 88, 115, 25)
  64. GUICtrlSetResizing($scan, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  65. Global $delete = GUICtrlCreateButton($delSelection, 512, 115, 115, 25)
  66. GUICtrlSetState($delete, $GUI_DISABLE)
  67. GUICtrlSetResizing($delete, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
  68. $Label4 = GUICtrlCreateLabel("Резутат:", 8, 188, 62, 20)
  69. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  70. $Label5 = GUICtrlCreateLabel("или папки", 8, 16, 70, 20)
  71. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  72. $Label6 = GUICtrlCreateLabel("Выбирите тип:", 8, 32, 98, 20)
  73. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  74. $Label6 = GUICtrlCreateLabel("Статус:", 8, 165, 98, 20)
  75. GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
  76. GUICtrlSetState($emptyRec, $GUI_DISABLE)
  77. GUICtrlSetState($status, $GUI_DISABLE)
  78. GUICtrlSetState($vvv, $GUI_DISABLE)
  79. GUICtrlSetState($count, $GUI_DISABLE)
  80. GUICtrlSetState($countSt, $GUI_DISABLE)
  81. GUISetState(@SW_SHOW)
  82. #EndRegion
  83.  
  84. Global $countI
  85. Global $countS
  86. Global $countD
  87.  
  88. While 1
  89.     $nMsg = GUIGetMsg()
  90.     Switch $nMsg
  91.     Case $selectType
  92.             GUICtrlSetData($countSt, "")
  93.             $selected = FileSelectFolder("Выбирите папку", "", "", 4 )
  94.             if $selected <> "" Then
  95.                 GUICtrlSetData($path, $selected)
  96.             EndIf
  97.         Case $vvv
  98.             GUICtrlSetData($countSt, "")
  99.             If GUICtrlRead($vvv) = 1 Then
  100.                 _GUICtrlListView_SetItemSelected($result, -1, True)
  101.             Else
  102.                 _GUICtrlListView_SetItemSelected($result, -1, False)
  103.             EndIf
  104.         Case $scan
  105.             $countI = 0
  106.             GUICtrlSetData($countSt, "Поиск файлов/папок")
  107.             _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($result))
  108.             Switch GUICtrlRead($type)
  109.                 Case $pf
  110.                     $t = 0
  111.                 Case $p
  112.                     $t = 2
  113.                 Case $f
  114.                     $t = 1
  115.                 Case Else
  116.                     $t = 2
  117.             EndSwitch
  118.             $pz = GUICtrlRead($path)
  119.             if FileExists($pz) = 0 Then
  120.                 MsgBox(16,"Ошибка","'" & $pz & "' не существует")
  121.                 GUICtrlSetData($countS, "")
  122.                 ContinueLoop
  123.             EndIf
  124.             GUICtrlSetData($result, "")
  125.             DisableAll()
  126.             GUICtrlSetData($scan, $break)
  127.             GUICtrlSetState($scan, $GUI_ENABLE)
  128.             Scan($pz, GUICtrlRead($name), $t)
  129.             EnableAll()
  130.             GUICtrlSetData($scan, "Сканировать")
  131.             GUICtrlSetData($countSt, "Поиск файлов/папок завершен")
  132.             GUICtrlSetState($vvv, $GUI_ENABLE)
  133.             GUICtrlSetState($emptyRec, $GUI_ENABLE)
  134.             GUICtrlSetState($delete, $GUI_ENABLE)
  135.         Case $delete
  136.             $countS = 0
  137.             $countD = 0
  138.             If MsgBox(4, "Подтверждение об удалении файла", "Вы уверены что хотите удалить файл?", 0, $Form1) = 7 Then
  139.                 ContinueLoop
  140.             EndIf
  141.             DisableAll()
  142.             GUICtrlSetData($delete, $break)
  143.             GUICtrlSetState($delete, $GUI_ENABLE)
  144.             If DeleteFile() = False Then
  145.                 EnableAll()
  146.                 GUICtrlSetData($delete, $delSelection)
  147.                 GUICtrlSetState($emptyRec, $GUI_ENABLE)
  148.                 GUICtrlSetState($vvv, $GUI_ENABLE)
  149.                 ContinueLoop
  150.             EndIf
  151.             If GUICtrlRead($emptyRec) = 1 Then
  152.                 FileRecycleEmpty(GUICtrlRead($path) & '\' & GUICtrlRead($name))
  153.             EndIf
  154.             EnableAll()
  155.             GUICtrlSetData($delete, $delSelection)
  156.             GUICtrlSetState($vvv, $GUI_UNCHECKED)
  157.             GUICtrlSetState($emptyRec, $GUI_UNCHECKED)
  158.             GUICtrlSetState($delete, $GUI_DISABLE)
  159.             _GUICtrlListView_SetItemSelected($result, -1, False)
  160.         Case $GUI_EVENT_CLOSE
  161.             Exit
  162.     EndSwitch
  163. WEnd
  164.  
  165. Func Scan($path, $delStr, $type)
  166.     $FileList = _FileListToArray($path, "*", $type)
  167.     if Not IsArray($FileList) Then
  168.         Return
  169.     EndIf
  170.     _ArrayDelete($FileList, 0)
  171.     For $value In $FileList
  172.         $key = GUIGetMsg()
  173.         If $key = $scan Then
  174.             GUICtrlSetData($countSt, "Поиск остановлен пользователем")
  175.             return True
  176.         EndIf
  177.         If StringInStr(FileGetAttrib($path & '\' & $value), 'D') Then
  178.             $ff = True
  179.             $ft = "Папка"
  180.         Else
  181.             $ff = False
  182.             $ft = "Файл"
  183.         EndIf
  184.         GUICtrlSetData($status, $path & '\' & $value)
  185.         if StringRegExp($value, $delStr, 0) = 1  Then
  186.             _GUICtrlListView_AddItem($result, $path & '\' & $value,0)
  187.             _GUICtrlListView_AddSubItem($result, $countI, $ft,1)
  188.             $countI = $countI + 1
  189.             GUICtrlSetData($count, "0/0/" & $countI)
  190.         Else
  191.             If Scan($path & '\' & $value, $delStr, $type) = True Then
  192.                 return True
  193.             EndIf
  194.         EndIf
  195.     Next
  196. EndFunc
  197.  
  198. Func DisableAll()
  199.     GUICtrlSetState($vvv, $GUI_DISABLE)
  200.     GUICtrlSetState($emptyRec, $GUI_DISABLE)
  201.     GUICtrlSetState($name, $GUI_DISABLE)
  202.     GUICtrlSetState($delete, $GUI_DISABLE)
  203.     GUICtrlSetState($scan, $GUI_DISABLE)
  204.     GUICtrlSetState($selectType, $GUI_DISABLE)
  205.     GUICtrlSetState($type, $GUI_DISABLE)
  206.     GUICtrlSetData($status, "")
  207. EndFunc
  208.  
  209. Func EnableAll()
  210.     GUICtrlSetData($status, "")
  211.     GUICtrlSetState($name, $GUI_ENABLE)
  212.     GUICtrlSetState($scan, $GUI_ENABLE)
  213.     GUICtrlSetState($selectType, $GUI_ENABLE)
  214.     GUICtrlSetState($type, $GUI_ENABLE)
  215. EndFunc
  216.  
  217. Func DeleteFile()
  218.     GUICtrlSetData($countSt, "Проверка выбраных файлов/папок")
  219.     $countOfItem = _GUICtrlListView_GetItemCount($result)
  220.     $tmp = false
  221.     Dim $arr[1]
  222.     for $i = 0 to $countOfItem Step 1
  223.         $key = GUIGetMsg()
  224.         If $key = $delete Then
  225.             GUICtrlSetData($countSt, "Проверка остановлена пользователем")
  226.             return False
  227.         EndIf
  228.         if _GUICtrlListView_GetItemSelected($result, $i) = True Then
  229.             ReDim $arr[$i+1]
  230.             $arr[$i] = _GUICtrlListView_GetItemText($result, $i)
  231.             $tmp = True
  232.             $countS = $countS + 1
  233.             GUICtrlSetData($count, "0/" & $countS & "/" & $countI)
  234.         EndIf
  235.     Next
  236.     If $tmp = False Then
  237.         GUICtrlSetData($countSt, "Выбраных файлов/папок нет")
  238.         MsgBox(16,"Ошибка","Не выбрано ни одного файла из списка!!!")
  239.         Return $tmp
  240.     EndIf
  241.     GUICtrlSetData($countSt, "Удаление выбраных файлов/папок")
  242.     for $i = 0 to UBound($arr)-1 Step 1
  243.         $key = GUIGetMsg()
  244.         If $key = $delete Then
  245.             GUICtrlSetData($countSt, "Удаление остановлено пользователем")
  246.             return False
  247.         EndIf
  248.         if FileExists($arr[$i]) = 1 Then
  249.             $countD = $countD + 1
  250.             GUICtrlSetData($status, $arr[$i])
  251.             FileRecycle($arr[$i])
  252.             _GUICtrlListView_SetItemText($result, $i, $arr[$i] & " - удалено")
  253.             GUICtrlSetData($count, $countD & "/" & $countS & "/" & $countI)
  254.         EndIf
  255.     Next
  256.     GUICtrlSetData($countSt, "Выбраные файлы/папки удалены")
  257.     return True
  258. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement