#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=1_Icon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Информация об архивах.
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: madmasles
Script Function:
Получение информации об архивных файлах из выбранной папки и сохранение ее в файл
#ce ----------------------------------------------------------------------------
#region Include
#include <Constants.au3>
#include <File.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <Timers.au3>
#include <GuiComboBoxEx.au3>
#include <EditConstants.au3>
#include <ProgressConstants.au3>
#endregion Include
#region Opt
Opt('MustDeclareVars', 1)
Opt("TrayMenuMode", 1)
#endregion Opt
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
#region Variables
;===========
;типы архивов и индексы иконок к ним в файле Icons.icl
Dim $aIcons[35][2] = [['7z', 0],['zip', 1],['bz2', 2],['bzip2', 2],['tbz2', 2],['tbz', 2], _
['rar', 3],['arj', 4],['z', 5],['taz', 5],['lzh', 6],['lha', 6],['cab', 7], _
['iso', 8],['001', 9],['rpm', 10],['deb', 11],['cpio', 12],['tar', 13],['gz', 14], _
['gzip', 14],['tgz', 14],['tpz', 14],['wim', 15],['swm', 15],['lzma', 16], _
['dmg', 17],['hfs', 18],['xar', 19],['vhd', 20],['fat', 21],['ntfs', 22],['xz', 23], _
['txz', 23],['PE', 24]]
;===========
;переменные окна
Global $hImageList, $hGUI, $InputPath, $ButtonSelect, $ButtonSave, $ButtonGet, $InputSave, _
$ListView, $hListView, $hCombo, $nMsg, $Progress, $Label
Global $sTitle = 'Файлы архивов - информация.'
;другие переменные
Global $iCheckInstall_7z, $iCheckInstall_Icons, $iCheckInstall_Dll;проверка для FileInstall
Global $sMessageError = 'Произошла какая-то ошибка.' & @CRLF & _
'Попробуйте запустить программу еше раз.'
Global $iCheckAddIcon;проверка для _GUIImageList_AddIcon
Global $q = 0;счетчик для типов файлов
Global $j = 0;счетчик для архивных файлов
Global $iCheckSave;проверка для _SaveInfo()
Global $iID = 0;проверка для _ToolTipCombo()
Global $iCheckDrop;проверка для _DropFolder()
Global $iCheckSelect;проверка для _SelectFolder()
Global $iCheckGet;проверка для _GetArchivesInfo()
#endregion Variables
#region Start
For $i = 1 To 5
$iCheckInstall_Dll = FileInstall('7z.dll', @TempDir & '\7z.dll', 1)
If $iCheckInstall_Dll Then ExitLoop
Next
If Not $iCheckInstall_Dll Then
MsgBox(16, $sTitle, $sMessageError)
Exit
EndIf
For $i = 1 To 5
$iCheckInstall_7z = FileInstall('7z.exe', @TempDir & '\7z.exe', 1)
If $iCheckInstall_7z Then ExitLoop
Next
If Not $iCheckInstall_7z Then
MsgBox(16, $sTitle, $sMessageError)
Exit
EndIf
For $i = 1 To 5
$iCheckInstall_Icons = FileInstall('Icons.icl', @TempDir & '\Icons.icl', 1)
If $iCheckInstall_Icons Then ExitLoop
Next
If Not $iCheckInstall_Icons Then
MsgBox(16, $sTitle, $sMessageError)
Exit
EndIf
For $i = 1 To 5
$hImageList = _GUIImageList_Create(16, 16, 5, 1)
If $hImageList Then ExitLoop
Next
If Not $hImageList Then
MsgBox(16, $sTitle, $sMessageError)
Exit
EndIf
For $i = 0 To 25
For $w = 1 To 5
$iCheckAddIcon = _GUIImageList_AddIcon($hImageList, @TempDir & '\Icons.icl', $i)
If $iCheckAddIcon <> -1 Then ExitLoop
Next
If $iCheckAddIcon = -1 Then
MsgBox(16, $sTitle, $sMessageError)
Exit
EndIf
Next
#endregion Start
#region GUICreate
$hGUI = GUICreate($sTitle, 540, 330, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUISetBkColor(0xFFFFCC)
$InputPath = GUICtrlCreateInput('', 10, 10, 490, 20, _
BitOR($GUI_SS_DEFAULT_INPUT, $ES_LEFT, $ES_READONLY))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetTip(-1, 'Перетащите сюда папку с архивными' & @CRLF & _
'файлами или кликните по кнопке справа.', $sTitle, 1, 3)
$ButtonSelect = GUICtrlCreateButton('...', 505, 10, 25, 20)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Выбрать папку с архивными файлами.', $sTitle, 1, 3)
$ButtonGet = GUICtrlCreateButton('Получить', 20, 40, 100, 25)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Получить информацию об архивных файлах из выбранной папки.', $sTitle, 1, 3)
GUICtrlSetState(-1, $GUI_DISABLE)
$InputSave = GUICtrlCreateInput('', 280, 43, 100, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_LEFT))
GUICtrlSetTip(-1, 'Имя файла для отчета. Вы можете изменить его на любое другое.', $sTitle, 1, 3)
$ButtonSave = GUICtrlCreateButton('Сохранить', 420, 40, 100, 25)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Сохранить информацию об архивных файлах в файл.', $sTitle, 1, 3)
GUICtrlSetState(-1, $GUI_DISABLE)
$ListView = GUICtrlCreateListView('', 5, 75, 530, 200, $LVS_SHOWSELALWAYS, _
BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
$hListView = GUICtrlGetHandle($ListView)
_GUICtrlListView_SetBkColor($hListView, $CLR_MONEYGREEN)
_GUICtrlListView_SetTextColor($hListView, $CLR_BLACK)
_GUICtrlListView_SetTextBkColor($hListView, $CLR_MONEYGREEN)
_GUICtrlListView_AddColumn($hListView, 'Имена архивов', 200, 2)
_GUICtrlListView_AddColumn($hListView, 'Размер', 75, 2)
_GUICtrlListView_AddColumn($hListView, 'Файлов', 75, 2)
_GUICtrlListView_AddColumn($hListView, 'Папок', 75, 2)
_GUICtrlListView_AddColumn($hListView, 'Тип', 75, 2)
_GUICtrlListView_SetImageList($hListView, $hImageList, 1)
$hCombo = _GUICtrlComboBoxEx_Create($hGUI, 'все', 160, 42, 80, 100)
_GUICtrlComboBoxEx_SetImageList($hCombo, $hImageList)
_GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
_GUICtrlComboBoxEx_SetItemSelectedImage($hCombo, 0, 25)
$Progress = GUICtrlCreateProgress(10, 300, 520, 20, $PBS_SMOOTH)
GUICtrlSetState(-1, $GUI_HIDE)
$Label = GUICtrlCreateLabel('', 30, 280, 200, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()
#endregion GUICreate
#region Work
AdlibRegister('_ToolTipCombo', 50)
AdlibRegister('_No_Change_Combo', 50)
_WinAPI_EmptyWorkingSet()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete(@TempDir & '\7z.exe')
FileDelete(@TempDir & '\7z.dll')
FileDelete(@TempDir & '\Icons.icl')
Exit
Case $GUI_EVENT_DROPPED
For $i = 1 To 5
$iCheckDrop = _DropFolder()
If $iCheckDrop Then ExitLoop
Next
If Not $iCheckDrop Then
_ToolTipEx('Произошла ошибка перетаскивания папки.', _
Default, Default, $sTitle, 1, 5, 5000)
EndIf
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
Case $ButtonGet
GUISetState(@SW_DISABLE, $hGUI)
For $i = 1 To 5
$iCheckGet = _GetArchivesInfo()
If $iCheckGet Then ExitLoop
Next
If Not $iCheckGet Then
_GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
_GUICtrlListView_DeleteAllItems($hListView)
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
If $j Then
For $i = $j To 1 Step -1
_GUICtrlComboBoxEx_DeleteString($hCombo, 1)
Next
EndIf
_ToolTipEx('Произошла ошибка получения информации об архивных файлах.', _
Default, Default, $sTitle, 1, 5, 5000)
EndIf
GUICtrlSetState($Progress, $GUI_HIDE)
GUICtrlSetState($Label, $GUI_HIDE)
GUISetState(@SW_ENABLE, $hGUI)
_WinAPI_EmptyWorkingSet()
Case $ButtonSelect
GUISetState(@SW_DISABLE, $hGUI)
For $i = 1 To 5
$iCheckSelect = _SelectFolder()
If $iCheckSelect Then ExitLoop
Next
If Not $iCheckSelect Then
_ToolTipEx('Произошла ошибка выбора папки.', _
Default, Default, $sTitle, 1, 5, 5000)
EndIf
GUISetState(@SW_ENABLE, $hGUI)
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
Case $ButtonSave
For $i = 1 To 5
$iCheckSave = _SaveInfo()
If $iCheckSave Then ExitLoop
Next
If $iCheckSave Then
_ToolTipEx('Отчет успешно сохранен в файл.' & @LF & '"' & @ScriptDir & '\' & _
GUICtrlRead($InputSave) & '"', Default, Default, $sTitle, 1, 5, 5000)
Else
_ToolTipEx('Произошла ошибка сохранения отчета в файл.', _
Default, Default, $sTitle, 1, 5, 5000)
GUICtrlSetState($ButtonSave, $GUI_ENABLE)
EndIf
Case $ListView
Switch GUICtrlGetState($ListView)
Case 0
_ToolTipEx('Имена архивных файлов из выбранной папки и их количество.', _
Default, Default, $sTitle, 1, 5, 5000)
Case 1
_ToolTipEx('Размеры архивных файлов из выбранной папки (в килобайтах).', _
Default, Default, $sTitle, 1, 5, 5000)
Case 2
_ToolTipEx('Количество файлов в архивных файлах из выбранной папки.', Default, _
Default, $sTitle, 1, 5, 5000)
Case 3
_ToolTipEx('Количество папок в архивных файлах из выбранной папки.', Default, _
Default, $sTitle, 1, 5, 5000)
Case 4
_ToolTipEx('Типы архивных файлов из выбранной папки.', Default, Default, _
$sTitle, 1, 5, 5000)
EndSwitch
EndSwitch
WEnd
#endregion Work
;==============
#region Functions
Func _DropFolder()
Local $bCheckColumn, $bCheckDel
GUICtrlSetData($InputSave, '')
For $i = 1 To 5
$bCheckColumn = _GUICtrlListView_SetColumn($hListView, 0, 'Имена архивов', -1, 2)
If $bCheckColumn Then ExitLoop
Next
If Not $bCheckColumn Then Return 0
For $i = 1 To 5
$bCheckDel = _GUICtrlListView_DeleteAllItems($hListView)
If $bCheckDel Then ExitLoop
Next
If Not $bCheckDel Then Return 0
_GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
If $j Then
For $i = $j To 1 Step -1
_GUICtrlComboBoxEx_DeleteString($hCombo, 1)
Next
EndIf
If Not StringInStr(FileGetAttrib(@GUI_DragFile), 'D') Then
_ToolTipEx('Вы выбрали файл, а не папку.', Default, Default, $sTitle, 3, 5, 5000)
GUICtrlSetData($InputPath, '')
GUICtrlSetTip($InputPath, 'Перетащите сюда папку с архивными' & @CRLF & _
'файлами или кликните по кнопке справа.', $sTitle, 1, 3)
GUICtrlSetState($ButtonGet, $GUI_DISABLE)
Else
GUICtrlSetTip($InputPath, @GUI_DragFile, $sTitle, 1, 3)
GUICtrlSetState($ButtonGet, $GUI_ENABLE)
EndIf
Return 1
EndFunc ;==>_DropFolder
Func _SelectFolder()
Local $bCheckColumn, $bCheckDel, $sPath
GUICtrlSetData($InputPath, '')
GUICtrlSetData($InputSave, '')
For $i = 1 To 5
$bCheckColumn = _GUICtrlListView_SetColumn($hListView, 0, 'Имена архивов', -1, 2)
If $bCheckColumn Then ExitLoop
Next
If Not $bCheckColumn Then Return 0
For $i = 1 To 5
$bCheckDel = _GUICtrlListView_DeleteAllItems($hListView)
If $bCheckDel Then ExitLoop
Next
If Not $bCheckDel Then Return 0
_GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
If $j Then
For $i = $j To 1 Step -1
_GUICtrlComboBoxEx_DeleteString($hCombo, 1)
Next
EndIf
$sPath = FileSelectFolder('Укажите папку c архивными файлами', @DesktopDir & '\', 2)
If Not @error Then
If FileGetAttrib($sPath) <> '' Then
GUICtrlSetData($InputPath, $sPath)
GUICtrlSetState($ButtonGet, $GUI_ENABLE)
Else
GUICtrlSetState($ButtonGet, $GUI_DISABLE)
EndIf
Else
GUICtrlSetState($ButtonGet, $GUI_DISABLE)
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
EndIf
Return 1
EndFunc ;==>_SelectFolder
Func _ToolTipEx($sText, $iX = Default, $iY = Default, $sTitle = Default, $iIcon = Default, _
$iOptions = Default, $iTimeOut = 0)
AdlibUnRegister('_ToolTipCombo')
GUICtrlSetTip($InputPath, '')
GUICtrlSetTip($ButtonSelect, '')
GUICtrlSetTip($ButtonGet, '')
GUICtrlSetTip($InputSave, '')
GUICtrlSetTip($ButtonSave, '')
ToolTip($sText, $iX, $iY, $sTitle, $iIcon, $iOptions)
If $iTimeOut Then
_Timer_SetTimer(0, $iTimeOut, '_ToolTipEx_Callback')
EndIf
EndFunc ;==>_ToolTipEx
Func _ToolTipEx_Callback($hWnd, $Msg, $iIDTimer, $dwTime)
Local $sInputPath
_Timer_KillTimer($hWnd, $iIDTimer)
ToolTip('')
AdlibRegister('_ToolTipCombo', 50)
$sInputPath = GUICtrlRead($InputPath)
If $sInputPath Then
GUICtrlSetTip($InputPath, $sInputPath, $sTitle, 1, 3)
Else
GUICtrlSetTip($InputPath, 'Перетащите сюда папку с архивными' & @CRLF & _
'файлами или кликните по кнопке справа.', $sTitle, 1, 3)
EndIf
GUICtrlSetTip($ButtonSelect, 'Выбрать папку с архивными файлами.', $sTitle, 1, 3)
GUICtrlSetTip($ButtonGet, 'Получить информацию об архивных файлах из выбранной папки.', $sTitle, 1, 3)
GUICtrlSetTip($InputSave, 'Имя файла для отчета. Вы можете изменить его на любое другое.', $sTitle, 1, 3)
GUICtrlSetTip($ButtonSave, 'Сохранить информацию об архивных файлах в файл.', $sTitle, 1, 3)
EndFunc ;==>_ToolTipEx_Callback
Func _ToolTipCombo()
Local $aCursor, $aWinPos, $aWinCS, $iKX = 0, $iKY = 0, $iXt, $iYt
$aCursor = GUIGetCursorInfo()
If Not IsArray($aCursor) Then Return
$aWinPos = WinGetPos($hGUI)
If Not IsArray($aWinPos) Then Return
$aWinCS = WinGetClientSize($hGUI)
If Not IsArray($aWinCS) Then Return
If $aWinPos[2] > $aWinCS[0] Then
$iKX = ($aWinPos[2] - $aWinCS[0]) / 2
EndIf
If $aWinPos[3] > $aWinCS[1] Then
$iKY = $aWinPos[3] - $aWinCS[1] - $iKX
EndIf
$iXt = 200 + $aWinPos[0] + $iKX
$iYt = 63 + $aWinPos[1] + $iKY
Switch $aCursor[1]
Case 43 To 60
Switch $aCursor[0]
Case 222 To 239
GUISetCursor(0, 1)
If $iID = 0 Then $iID = 1
If $aCursor[2] Then
ToolTip('', '')
$iID = 2
Else
If $iID = 1 Then
ToolTip('Выберите тип архива для сохранения в файл.', $iXt, $iYt, _
$sTitle, 1, 3)
EndIf
EndIf
Case Else
$iID = 0
GUISetCursor(2, 1)
If Not $aCursor[4] Then
ToolTip('', '')
EndIf
EndSwitch
Case Else
$iID = 0
GUISetCursor(2, 1)
If Not $aCursor[4] Then
ToolTip('', '')
EndIf
EndSwitch
EndFunc ;==>_ToolTipCombo
Func _No_Change_Combo()
Local $ID_Focus = ControlGetFocus($hGUI)
If $ID_Focus = 'Edit3' Then
GUICtrlSetState($ButtonSelect, $GUI_FOCUS)
EndIf
EndFunc ;==>_No_Change_Combo
Func _WinAPI_EmptyWorkingSet($pid = 0)
If Not $pid Then
$pid = _WinAPI_GetCurrentProcessID()
If Not $pid Then
Return SetError(1, 0, 0)
EndIf
EndIf
Local $hProcess = DllCall('kernel32.dll', 'ptr', 'OpenProcess', 'dword', 0x001F0FFF, 'int', _
0, 'dword', $pid)
If (@error) Or (Not $hProcess[0]) Then
Return SetError(1, 0, 0)
EndIf
Local $Ret = DllCall(@SystemDir & '\psapi.dll', 'int', 'EmptyWorkingSet', 'ptr', $hProcess[0])
If (@error) Or (Not $Ret[0]) Then
$Ret = 0
EndIf
_WinAPI_CloseHandle($hProcess[0])
If Not IsArray($Ret) Then
Return SetError(1, 0, 0)
EndIf
Return 1
EndFunc ;==>_WinAPI_EmptyWorkingSet
Func _GetArchivesInfo()
Local $sPath, $sLog, $aList, $iPercent, $pid, $iSize, $sType, $sFile_Number, $sFolder_Number, _
$iIndex, $sFileSave, $iLV0, $iLV1, $iLV2, $iLV3, $iLV4, $bCheckColumn, $iCB, _
$sPathShort
Dim $aArchives[1][6]
Dim $aType[1][2] = [['все', 25]]
$q = 0
$j = 0
$sPath = GUICtrlRead($InputPath)
If Not $sPath Then Return 0
GUICtrlSetState($ButtonGet, $GUI_DISABLE)
GUICtrlSetData($Progress, '')
GUICtrlSetData($InputSave, '')
GUICtrlSetData($Label, '')
$aList = _FileListToArray($sPath, '*', 1)
If IsArray($aList) Then
$iPercent = 100 / Number($aList[0])
GUICtrlSetState($Progress, $GUI_SHOW)
GUICtrlSetState($Label, $GUI_SHOW)
For $i = 1 To $aList[0]
$sLog = ''
$sPathShort = FileGetShortName($sPath & '\' & $aList[$i])
If Not StringInStr(FileGetAttrib($sPathShort), 'S') Then
$pid = Run(@TempDir & '\7z.exe l ' & $sPathShort, '', @SW_HIDE, $STDOUT_CHILD)
If Not $pid Then Return 0
While 1
$sLog &= StdoutRead($pid)
If @error Then ExitLoop
Sleep(10)
WEnd
If Not $sLog Then Return 0
If StringInStr($sLog, 'Listing archive') Then
$q += 1
ReDim $aArchives[$q + 1][6]
$iSize = FileGetSize($sPathShort)
Switch $iSize
Case 0 To 1024
$iSize = $iSize & ' b'
Case 1024 To 1048576
$iSize = Round($iSize / 1024, 2) & ' kb'
Case 1048577 To 1073741824
$iSize = Round($iSize / 1048576, 2) & ' Mb'
Case Else
$iSize = Round($iSize / 1073741824, 2) & ' Gb'
EndSwitch
If Not StringLen(String($iSize)) Then Return 0
$sType = StringRegExpReplace($sLog, '(?s).*?Type = (.*?)\r\n?.*', '\1')
If Not StringLen(String($sType)) Then Return 0
$sFile_Number = StringRegExpReplace($sLog, '(?s).*?\h(\d+) files?.*', '\1')
If Not StringLen(String($sFile_Number)) Then Return 0
$sFolder_Number = StringRegExpReplace($sLog, '(?s).*?\h(\d+) folders?.*', '\1')
If Not StringLen(String($sFolder_Number)) Then Return 0
$aArchives[$q][0] = $aList[$i]
$aArchives[$q][1] = $iSize
$aArchives[$q][2] = $sFile_Number
$aArchives[$q][3] = $sFolder_Number
$aArchives[$q][4] = $sType
$iIndex = _ArraySearch($aIcons, $sType, 0, 0, 0, 0, 0, 0)
If $iIndex = -1 Then
$aArchives[$q][5] = 25
Else
$aArchives[$q][5] = $aIcons[$iIndex][1]
EndIf
If _ArraySearch($aType, $sType, 0, 0, 0, 0, 1, 0) = -1 Then
$j += 1
ReDim $aType[$j + 1][2]
$aType[$j][0] = $sType
If $iIndex = -1 Then
$aType[$j][1] = 25
Else
$aType[$j][1] = $aIcons[$iIndex][1]
EndIf
EndIf
EndIf
EndIf
GUICtrlSetData($Progress, $iPercent * $i)
GUICtrlSetData($Label, 'Обработано ' & $i & ' файлов из ' & $aList[0])
Sleep(2)
Next
$aArchives[0][0] = $q
If $q Then
$sFileSave = @MDAY & '_' & @MON & '_' & StringLeft(StringRegExpReplace($sPath, _
'.*\\|\.*$', ''), 10) & '.txt'
GUICtrlSetData($InputSave, $sFileSave)
_GUICtrlListView_BeginUpdate($hListView)
For $i = 1 To $aArchives[0][0]
$iLV0 = _GUICtrlListView_AddItem($hListView, $aArchives[$i][0], $aArchives[$i][5])
If $iLV0 = -1 Then Return 0
$iLV1 = _GUICtrlListView_AddSubItem($hListView, $i - 1, $aArchives[$i][1], 1)
If Not $iLV1 Then Return 0
$iLV2 = _GUICtrlListView_AddSubItem($hListView, $i - 1, $aArchives[$i][2], 2)
If Not $iLV2 Then Return 0
$iLV3 = _GUICtrlListView_AddSubItem($hListView, $i - 1, $aArchives[$i][3], 3)
If Not $iLV3 Then Return 0
$iLV4 = _GUICtrlListView_AddSubItem($hListView, $i - 1, $aArchives[$i][4], 4)
If Not $iLV4 Then Return 0
Next
_GUICtrlListView_EndUpdate($hListView)
For $i = 1 To 5
$bCheckColumn = _GUICtrlListView_SetColumn($hListView, 0, 'Имена архивов (' & _
$aArchives[0][0] & ' файлов)', -1, 2)
If $bCheckColumn Then ExitLoop
Next
If Not $bCheckColumn Then Return 0
_GUICtrlComboBoxEx_BeginUpdate($hCombo)
If $j Then
For $i = 1 To $j
$iCB = _GUICtrlComboBoxEx_AddString($hCombo, $aType[$i][0], $aType[$i][1], _
$aType[$i][1])
If $iCB = -1 Then Return 0
Next
_GUICtrlComboBoxEx_EndUpdate($hCombo)
_GUICtrlComboBoxEx_SetCurSel($hCombo, 0)
EndIf
GUICtrlSetState($ButtonSave, $GUI_ENABLE)
Else
GUICtrlSetData($InputPath, '')
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
_ToolTipEx('В папке' & @LF & '"' & $sPath & '"' & @LF & 'нет архивных файлов.', _
Default, Default, $sTitle, 3, 5, 5000)
EndIf
Else
GUICtrlSetData($InputPath, '')
GUICtrlSetState($ButtonSave, $GUI_DISABLE)
_ToolTipEx('Папка' & @LF & '"' & $sPath & '"' & @LF & 'пустая.', _
Default, Default, $sTitle, 3, 5, 5000)
EndIf
Return 1
EndFunc ;==>_GetArchivesInfo
Func _SaveInfo()
Local $sSaveType, $iC = 0, $sFile, $iIndexType, $iCountLV, $hFileSave, $sString, $iWrite, _
$sString0, $sString1, $sString2, $sString3, $sString4, $iIndexCombo, $iI = 0
Local $sPath = GUICtrlRead($InputPath)
If Not $sPath Then Return 0
Local $sHead = @MDAY & '.' & @MON & '.' & @YEAR & '-' & @HOUR & ':' & @MIN & @CRLF & _
'"' & $sPath & '"' & @CRLF & '№. Имя файла; Размер; Файлов; Папок; Тип' & @CRLF & _
'==========================================' & @CRLF
$sFile = GUICtrlRead($InputSave)
If $sFile Then
If StringRight($sFile, 4) <> '.txt' Then
$sFile = StringLeft(StringRegExpReplace($sFile, '.*\\|\.[^.]*$', ''), 10) & '.txt'
EndIf
Else
$sFile = @MDAY & '_' & @MON & '.txt'
EndIf
If FileExists(@ScriptDir & '\' & $sFile) Then
$iC += 1
$sFile = $iC & '-' & StringRegExpReplace($sFile, '^.*\-', '')
While 1
If Not FileExists(@ScriptDir & '\' & $sFile) Then ExitLoop
$iC += 1
$sFile = $iC & '-' & StringRegExpReplace($sFile, '^.*\-', '')
Sleep(2)
WEnd
EndIf
GUICtrlSetData($InputSave, $sFile)
$sFile = @ScriptDir & '\' & $sFile
For $i = 1 To 5
$iIndexType = _GUICtrlComboBox_GetCurSel($hCombo)
If $iIndexType <> -1 Then ExitLoop
Next
If $iIndexType = -1 Then Return 0
For $i = 1 To 5
$iCountLV = _GUICtrlListView_GetItemCount($hListView)
If $iCountLV Then ExitLoop
Next
If Not $iCountLV Then Return 0
For $i = 1 To 5
$hFileSave = FileOpen($sFile, 2)
If $hFileSave <> -1 Then ExitLoop
Next
If $hFileSave = -1 Then Return 0
For $i = 1 To 5
$iWrite = FileWrite($hFileSave, $sHead)
If $iWrite Then ExitLoop
Next
If Not $iWrite Then Return 0
Switch $iIndexType
Case 0
For $i = 0 To $iCountLV - 1
For $y = 1 To 5
$sString0 = _GUICtrlListView_GetItemText($hListView, $i)
If $sString0 Then ExitLoop
Next
If Not $sString0 Then Return 0
For $y = 1 To 5
$sString1 = _GUICtrlListView_GetItemText($hListView, $i, 1)
If $sString1 Then ExitLoop
Next
If Not $sString1 Then Return 0
For $y = 1 To 5
$sString2 = _GUICtrlListView_GetItemText($hListView, $i, 2)
If $sString2 Then ExitLoop
Next
If Not $sString2 Then Return 0
For $y = 1 To 5
$sString3 = _GUICtrlListView_GetItemText($hListView, $i, 3)
If $sString3 Then ExitLoop
Next
If Not $sString3 Then Return 0
For $y = 1 To 5
$sString4 = _GUICtrlListView_GetItemText($hListView, $i, 4)
If $sString4 Then ExitLoop
Next
If Not $sString4 Then Return 0
$iI += 1
$sString = $iI & '. ' & $sString0 & '; ' & $sString1 & '; ' & $sString2 & '; ' & _
$sString3 & '; ' & $sString4
For $y = 1 To 5
$iWrite = FileWriteLine($hFileSave, $sString)
If $iWrite Then ExitLoop
Next
If Not $iWrite Then Return 0
Next
Case Else
For $i = 1 To 5
$iIndexCombo = _GUICtrlComboBoxEx_GetItemText($hCombo, $iIndexType, $sSaveType)
If $iIndexCombo <> -1 Then ExitLoop
Next
If $iIndexCombo = -1 Then Return 0
For $i = 0 To $iCountLV - 1
For $y = 1 To 5
$sString4 = _GUICtrlListView_GetItemText($hListView, $i, 4)
If $sString4 Then ExitLoop
Next
If Not $sString4 Then Return 0
If $sString4 = $sSaveType Then
For $y = 1 To 5
$sString0 = _GUICtrlListView_GetItemText($hListView, $i)
If $sString0 Then ExitLoop
Next
If Not $sString0 Then Return 0
For $y = 1 To 5
$sString1 = _GUICtrlListView_GetItemText($hListView, $i, 1)
If $sString1 Then ExitLoop
Next
If Not $sString1 Then Return 0
For $y = 1 To 5
$sString2 = _GUICtrlListView_GetItemText($hListView, $i, 2)
If $sString2 Then ExitLoop
Next
If Not $sString2 Then Return 0
For $y = 1 To 5
$sString3 = _GUICtrlListView_GetItemText($hListView, $i, 3)
If $sString3 Then ExitLoop
Next
If Not $sString3 Then Return 0
$iI += 1
$sString = $iI & '. ' & $sString0 & '; ' & $sString1 & '; ' & $sString2 & '; ' & _
$sString3 & '; ' & $sString4
For $y = 1 To 5
$iWrite = FileWriteLine($hFileSave, $sString)
If $iWrite Then ExitLoop
Next
If Not $iWrite Then Return 0
EndIf
Next
EndSwitch
FileClose($hFileSave)
Return 1
EndFunc ;==>_SaveInfo
#endregion Functions