Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #cs ----------------------------------------------------------------------------
- AutoIt Version: 3.3.6.1
- Author: DropSQL
- Script Function:
- Скрипт удаляет файлы/папки указаным регулярным выржением задаюшим его имя
- #ce ----------------------------------------------------------------------------
- #include <ButtonConstants.au3>
- #include <ComboConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <GUIListBox.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #Include <File.au3>
- #Include <Array.au3>
- #include <ListviewConstants.au3>
- #Include <GuiListView.au3>
- Opt("GUIResizeMode", $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- #Region
- $delSelection = "Удалить выделенное"
- $break = "Остановить"
- $pf = "Папка и файл"
- $p = "Папка"
- $f = "Файл"
- #EndRegion
- #Region
- $Form1 = GUICreate("Удаление файлов или папок", 633, 460, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
- Global $name = GUICtrlCreateInput("", 144, 8, 482, 21)
- GUICtrlSetResizing($name, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- $Label1 = GUICtrlCreateLabel("Введите имя файла", 8, 0, 133, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- $Label1 = GUICtrlCreateLabel("Проверяется:", 8, 142, 103, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- Global $status = GUICtrlCreateInput("", 144, 142, 483, 21)
- GUICtrlSetResizing($status, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $count = GUICtrlCreateInput("", 500, 165, 126, 21)
- GUICtrlSetResizing($count, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $countSt = GUICtrlCreateInput("", 144, 165, 351, 21)
- GUICtrlSetResizing($countSt, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $type = GUICtrlCreateCombo($pf, 144, 32, 482, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
- GUICtrlSetResizing($type, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- GUICtrlSetData($type, $p & "|" & $f)
- Global $selectType = GUICtrlCreateButton($pf, 512, 56, 115, 25)
- GUICtrlSetResizing($selectType, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $emptyRec = GUICtrlCreateCheckbox("Очистить корзину", 400, 118, 113, 17)
- GUICtrlSetResizing($emptyRec, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $vvv = GUICtrlCreateCheckbox("Выделить всё", 400, 90, 113, 17)
- GUICtrlSetResizing($vvv, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- $Label3 = GUICtrlCreateLabel("Выбраная папка:", 8, 56, 114, 20)
- GUICtrlSetFont($Label3, 10, 400, 0, "MS Sans Serif")
- Global $path = GUICtrlCreateInput("", 144, 56, 361, 21)
- GUICtrlSetData($path, @DocumentsCommonDir)
- GUICtrlSetResizing($path, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- GUICtrlSetState(-1, $GUI_DISABLE)
- Global $result = GUICtrlCreateListView("", 144, 188, 482, 279-13, BitOR($LVS_REPORT,$LVS_NOSORTHEADER,$LVS_SHOWSELALWAYS))
- _GUICtrlListView_InsertColumn($result, 0, "Путь", 414)
- _GUICtrlListView_InsertColumn($result, 1, "Тип", 46)
- GUICtrlSetResizing($result, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $scan = GUICtrlCreateButton("Сканировать", 512, 88, 115, 25)
- GUICtrlSetResizing($scan, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- Global $delete = GUICtrlCreateButton($delSelection, 512, 115, 115, 25)
- GUICtrlSetState($delete, $GUI_DISABLE)
- GUICtrlSetResizing($delete, $GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHCENTER+$GUI_DOCKVCENTER+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
- $Label4 = GUICtrlCreateLabel("Резутат:", 8, 188, 62, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- $Label5 = GUICtrlCreateLabel("или папки", 8, 16, 70, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- $Label6 = GUICtrlCreateLabel("Выбирите тип:", 8, 32, 98, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- $Label6 = GUICtrlCreateLabel("Статус:", 8, 165, 98, 20)
- GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
- GUICtrlSetState($emptyRec, $GUI_DISABLE)
- GUICtrlSetState($status, $GUI_DISABLE)
- GUICtrlSetState($vvv, $GUI_DISABLE)
- GUICtrlSetState($count, $GUI_DISABLE)
- GUICtrlSetState($countSt, $GUI_DISABLE)
- GUISetState(@SW_SHOW)
- #EndRegion
- Global $countI
- Global $countS
- Global $countD
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $selectType
- GUICtrlSetData($countSt, "")
- $selected = FileSelectFolder("Выбирите папку", "", "", 4 )
- if $selected <> "" Then
- GUICtrlSetData($path, $selected)
- EndIf
- Case $vvv
- GUICtrlSetData($countSt, "")
- If GUICtrlRead($vvv) = 1 Then
- _GUICtrlListView_SetItemSelected($result, -1, True)
- Else
- _GUICtrlListView_SetItemSelected($result, -1, False)
- EndIf
- Case $scan
- $countI = 0
- GUICtrlSetData($countSt, "Поиск файлов/папок")
- _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($result))
- Switch GUICtrlRead($type)
- Case $pf
- $t = 0
- Case $p
- $t = 2
- Case $f
- $t = 1
- Case Else
- $t = 2
- EndSwitch
- $pz = GUICtrlRead($path)
- if FileExists($pz) = 0 Then
- MsgBox(16,"Ошибка","'" & $pz & "' не существует")
- GUICtrlSetData($countS, "")
- ContinueLoop
- EndIf
- GUICtrlSetData($result, "")
- DisableAll()
- GUICtrlSetData($scan, $break)
- GUICtrlSetState($scan, $GUI_ENABLE)
- Scan($pz, GUICtrlRead($name), $t)
- EnableAll()
- GUICtrlSetData($scan, "Сканировать")
- GUICtrlSetData($countSt, "Поиск файлов/папок завершен")
- GUICtrlSetState($vvv, $GUI_ENABLE)
- GUICtrlSetState($emptyRec, $GUI_ENABLE)
- GUICtrlSetState($delete, $GUI_ENABLE)
- Case $delete
- $countS = 0
- $countD = 0
- If MsgBox(4, "Подтверждение об удалении файла", "Вы уверены что хотите удалить файл?", 0, $Form1) = 7 Then
- ContinueLoop
- EndIf
- DisableAll()
- GUICtrlSetData($delete, $break)
- GUICtrlSetState($delete, $GUI_ENABLE)
- If DeleteFile() = False Then
- EnableAll()
- GUICtrlSetData($delete, $delSelection)
- GUICtrlSetState($emptyRec, $GUI_ENABLE)
- GUICtrlSetState($vvv, $GUI_ENABLE)
- ContinueLoop
- EndIf
- If GUICtrlRead($emptyRec) = 1 Then
- FileRecycleEmpty(GUICtrlRead($path) & '\' & GUICtrlRead($name))
- EndIf
- EnableAll()
- GUICtrlSetData($delete, $delSelection)
- GUICtrlSetState($vvv, $GUI_UNCHECKED)
- GUICtrlSetState($emptyRec, $GUI_UNCHECKED)
- GUICtrlSetState($delete, $GUI_DISABLE)
- _GUICtrlListView_SetItemSelected($result, -1, False)
- Case $GUI_EVENT_CLOSE
- Exit
- EndSwitch
- WEnd
- Func Scan($path, $delStr, $type)
- $FileList = _FileListToArray($path, "*", $type)
- if Not IsArray($FileList) Then
- Return
- EndIf
- _ArrayDelete($FileList, 0)
- For $value In $FileList
- $key = GUIGetMsg()
- If $key = $scan Then
- GUICtrlSetData($countSt, "Поиск остановлен пользователем")
- return True
- EndIf
- If StringInStr(FileGetAttrib($path & '\' & $value), 'D') Then
- $ff = True
- $ft = "Папка"
- Else
- $ff = False
- $ft = "Файл"
- EndIf
- GUICtrlSetData($status, $path & '\' & $value)
- if StringRegExp($value, $delStr, 0) = 1 Then
- _GUICtrlListView_AddItem($result, $path & '\' & $value,0)
- _GUICtrlListView_AddSubItem($result, $countI, $ft,1)
- $countI = $countI + 1
- GUICtrlSetData($count, "0/0/" & $countI)
- Else
- If Scan($path & '\' & $value, $delStr, $type) = True Then
- return True
- EndIf
- EndIf
- Next
- EndFunc
- Func DisableAll()
- GUICtrlSetState($vvv, $GUI_DISABLE)
- GUICtrlSetState($emptyRec, $GUI_DISABLE)
- GUICtrlSetState($name, $GUI_DISABLE)
- GUICtrlSetState($delete, $GUI_DISABLE)
- GUICtrlSetState($scan, $GUI_DISABLE)
- GUICtrlSetState($selectType, $GUI_DISABLE)
- GUICtrlSetState($type, $GUI_DISABLE)
- GUICtrlSetData($status, "")
- EndFunc
- Func EnableAll()
- GUICtrlSetData($status, "")
- GUICtrlSetState($name, $GUI_ENABLE)
- GUICtrlSetState($scan, $GUI_ENABLE)
- GUICtrlSetState($selectType, $GUI_ENABLE)
- GUICtrlSetState($type, $GUI_ENABLE)
- EndFunc
- Func DeleteFile()
- GUICtrlSetData($countSt, "Проверка выбраных файлов/папок")
- $countOfItem = _GUICtrlListView_GetItemCount($result)
- $tmp = false
- Dim $arr[1]
- for $i = 0 to $countOfItem Step 1
- $key = GUIGetMsg()
- If $key = $delete Then
- GUICtrlSetData($countSt, "Проверка остановлена пользователем")
- return False
- EndIf
- if _GUICtrlListView_GetItemSelected($result, $i) = True Then
- ReDim $arr[$i+1]
- $arr[$i] = _GUICtrlListView_GetItemText($result, $i)
- $tmp = True
- $countS = $countS + 1
- GUICtrlSetData($count, "0/" & $countS & "/" & $countI)
- EndIf
- Next
- If $tmp = False Then
- GUICtrlSetData($countSt, "Выбраных файлов/папок нет")
- MsgBox(16,"Ошибка","Не выбрано ни одного файла из списка!!!")
- Return $tmp
- EndIf
- GUICtrlSetData($countSt, "Удаление выбраных файлов/папок")
- for $i = 0 to UBound($arr)-1 Step 1
- $key = GUIGetMsg()
- If $key = $delete Then
- GUICtrlSetData($countSt, "Удаление остановлено пользователем")
- return False
- EndIf
- if FileExists($arr[$i]) = 1 Then
- $countD = $countD + 1
- GUICtrlSetData($status, $arr[$i])
- FileRecycle($arr[$i])
- _GUICtrlListView_SetItemText($result, $i, $arr[$i] & " - удалено")
- GUICtrlSetData($count, $countD & "/" & $countS & "/" & $countI)
- EndIf
- Next
- GUICtrlSetData($countSt, "Выбраные файлы/папки удалены")
- return True
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement