- Сообщения
- 3,556
- Репутация
- 628
AutoIt: 3.3.8.0
Версия:
Категория: Файловая система
Описание: Программа может разделять любые файлы на любое количество частей.При этом создается программа склеиватель, которая может соединить части файла в целое с исходным именем.
Код/Пример:
Файл: AU3,EXE
История версий:
Источник: autoit-script.ru
Авторы: joiner
Версия:
Категория: Файловая система
Описание: Программа может разделять любые файлы на любое количество частей.При этом создается программа склеиватель, которая может соединить части файла в целое с исходным именем.
Код/Пример:
Код:
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUICloseOnESC", 0)
Opt("TrayMenuMode", 1)
FileInstall('Prosector.jpg', @TempDir & '\Prosector.jpg', 1)
Global $sFolderName, $sNewName, $iSize, $save, $razmer, $sFile
Global $ExitFunc = 0, $Pause = 0
$Form1 = GUICreate("Prosector", 437, 215, -1, -1)
GUICtrlCreatePic(@TempDir & '\Prosector.jpg', -1, -1, 437, 215)
GUICtrlSetState(-1, $GUI_DISABLE)
$Input1 = GUICtrlCreateLabel("", 16, 57, 406, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 10, 800, 2, "Arial")
GUICtrlSetColor(-1, 0x800080)
$Button1 = GUICtrlCreateButton("Файл", 16, 24, 75, 20, 0x8000)
$Label1 = GUICtrlCreateLabel("", 160, 24, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetData(-1, "Размер файла:")
GUICtrlSetColor(-1, 0x000080)
$Combo1 = GUICtrlCreateInput("", 16, 104, 73, 20, BitOR($ES_CENTER, $ES_NUMBER))
GUICtrlSetFont(-1, 10, 800, 2, "Arial")
GUICtrlSetColor(-1, 0x000080)
$iDummy = GUICtrlCreateDummy()
$size = GUICtrlCreateLabel("", 240, 24, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 10, 800, 2, "Arial")
GUICtrlSetColor(-1, 0xff0000)
$Label4 = GUICtrlCreateLabel("", 16, 80, 104, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetData(-1, "Кол-во частей")
GUICtrlSetColor(-1, 0x000080)
$Progress1 = GUICtrlCreateProgress(16, 142, 406, 17)
$Button2 = GUICtrlCreateButton("Старт", 16, 176, 75, 20)
$Button3 = GUICtrlCreateButton("Пауза", 184, 176, 75, 20)
$Button4 = GUICtrlCreateButton("Отмена", 348, 176, 75, 20)
$Label3 = GUICtrlCreateLabel("", 160, 104, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetData(-1, "Размер части:")
GUICtrlSetColor(-1, 0x000080)
$sizepart = GUICtrlCreateLabel("", 240, 104, 160, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont(-1, 10, 800, 2, "Arial")
GUICtrlSetColor(-1, 0xff0000)
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_BUTTON")
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $iDummy
$part_s = GUICtrlRead($Combo1)
If Not GUICtrlRead($Combo1) = '' And Not GUICtrlRead($Input1) = '' Then
$iPartSize = Ceiling($razmer / GUICtrlRead($Combo1))
GUICtrlSetData($sizepart, _ConvertFileSize($iPartSize))
Else
GUICtrlSetData($sizepart, '')
EndIf
Case $Button1
$sFile = FileOpenDialog('', '', '(*.*)')
If Not $sFile = '' Then
GUICtrlSetData($Input1, _ShortPath($sFile))
$razmer = FileGetSize($sFile)
GUICtrlSetData($size, _ConvertFileSize($razmer))
GUICtrlSetData($sizepart, '')
GUICtrlSetData($Combo1, '')
Else
GUICtrlSetData($sizepart, '')
GUICtrlSetData($Combo1, '')
GUICtrlSetData($Input1, '')
GUICtrlSetData($size, '')
EndIf
Case $Button2
$ret = _delim()
GUICtrlSetState($Button1, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_ENABLE)
GUICtrlSetState($Combo1, $GUI_ENABLE)
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
EndSwitch
WEnd
Func _ShortPath($sPath)
If StringLen($sPath) > 40 Then
Return StringRegExpReplace($sPath, '(^.{3,11}\\|.{11})(.*)(\\.{6,27}|.{27})$', '\1...\3')
Else
Return $sPath
EndIf
EndFunc ;==>_ShortPath
Func _delim()
Local $b = 0, $a = 0
$Win_name = StringRegExpReplace($sFile, '^.*\\', '')
If FileExists($sFile) Then
$iPart = GUICtrlRead($Combo1)
If Not $iPart = "" Then
$save = FileSelectFolder('Выберите папку', '', 3, '', $Form1)
If Not FileExists($save) = 0 Then
GUICtrlSetState($Button2, $GUI_DISABLE)
GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Combo1, $GUI_DISABLE)
GUICtrlSetState($Button3, $GUI_ENABLE)
GUICtrlSetState($Button4, $GUI_ENABLE)
Global $DataButton3 = GUICtrlRead($Button3)
_fileinstall()
Sleep(1000)
$iMaxRead = 1024 * 100
$sFolderName = StringRegExpReplace($sFile, '.*\\|\.[^.]*$', '')
$sNewName = StringRegExpReplace($sFile, '.*\\|\.[^.]*$', '')
$iSize = FileGetSize($sFile)
$round = Ceiling($iSize / $iMaxRead)
$step = Ceiling($round / 100)
$iPartSize = Ceiling($iSize / $iPart)
If $iMaxRead > $iPartSize Then $iMaxRead = $iPartSize
$hFile = FileOpen($sFile, 16)
If $hFile = -1 Then
$ExitFunc = 0
$Pause = 0
GUICtrlSetData($Progress1, '')
Return MsgBox(16, 'Ошибка!', 'Ошибка открытия исходного файла')
EndIf
For $i = 1 To $iPart
$hTempFile = FileOpen($save & '\' & $sFolderName & '\' & $i & '_' & $sNewName & '.xyz', 26)
If $hTempFile = -1 Then
$ExitFunc = 0
$Pause = 0
GUICtrlSetData($Progress1, '')
FileClose($hFile)
FileClose($hTempFile)
DirRemove($save & '\' & $sFolderName, 1)
Return MsgBox(16, 'Ошибка!', 'Ошибка создания файла' & @CRLF & 'Измените имя файла или конечный путь')
EndIf
$iSizeRead = 0
$iRead = $iMaxRead
Dim $part_next = $i
While $iSizeRead < $iPartSize
If $Pause = 1 Then
GUICtrlSetData($Button3, 'Далее')
While 1
If $Pause = 0 Then
GUICtrlSetData($Button3, $DataButton3)
ExitLoop
EndIf
If $ExitFunc = 1 Then
GUICtrlSetData($Button3, $DataButton3)
ExitLoop
EndIf
Sleep(100)
WEnd
EndIf
If $ExitFunc = 1 Then
$ExitFunc = 0
$Pause = 0
GUICtrlSetData($Progress1, '')
FileClose($hFile)
FileClose($hTempFile)
DirRemove($save & '\' & $sFolderName, 1)
Return
EndIf
$sTempText = FileRead($hFile, $iRead)
If @error Then
$ExitFunc = 0
$Pause = 0
GUICtrlSetData($Progress1, '')
FileClose($hFile)
FileClose($hTempFile)
DirRemove($save & '\' & $sFolderName, 1)
Return MsgBox(16, 'Ошибка!', 'Ошибка чтения из файла')
EndIf
$file_w = FileWrite($hTempFile, $sTempText)
If $file_w = 0 Then
$ExitFunc = 0
$Pause = 0
GUICtrlSetData($Progress1, '')
FileClose($hFile)
FileClose($hTempFile)
DirRemove($save & '\' & $sFolderName, 1)
Return MsgBox(16, 'Ошибка!', 'Ошибка записи в файл')
EndIf
$iSizeRead += $iRead
If $iRead > $iPartSize - $iSizeRead Then $iRead = $iPartSize - $iSizeRead
If $b = $step * $a Then
GUICtrlSetData($Progress1, $a)
$a += 1
EndIf
$b += 1
WEnd
FileClose($hTempFile)
Next
FileClose($hFile)
$ExitFunc = 0
$Pause = 0
_script_compile()
ProcessWaitClose("Aut2exe.exe")
FileDelete($save & "\" & $sFolderName & "\join.dat")
GUICtrlSetData($Progress1, 100)
Sleep(1000)
GUICtrlSetData($Progress1, '')
GUICtrlSetData($sizepart, '')
GUICtrlSetData($Combo1, '')
ElseIf $save = '' Then
Return
ElseIf FileExists($save) = 0 Then
Return MsgBox(16, 'Ошибка!', 'Путь не существует')
EndIf
Else
Return MsgBox(16, 'ошибка', 'не указано на сколько частей')
EndIf
Else
Return MsgBox(16, 'ошибка', 'нечего делить')
EndIf
EndFunc ;==>_delim
Func WM_COMMAND_BUTTON($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Switch $nNotifyCode
Case 0
Switch $nID
Case $Button4
GUICtrlSetState($Button1, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_ENABLE)
GUICtrlSetState($Combo1, $GUI_ENABLE)
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
$ExitFunc = 1
Case $Button3
If $Pause = 0 Then
$Pause = 1
Else
$Pause = 0
EndIf
EndSwitch
Case $EN_UPDATE
GUICtrlSendToDummy($iDummy, 1)
EndSwitch
Return 'GUI_RUNDEFMSG'
EndFunc ;==>WM_COMMAND_BUTTON
Func _script_compile()
GUICtrlSetData($sizepart, 'Компилирую сборщика')
$sFile1 = $sFile
$iPart1 = GUICtrlRead($Combo1)
Local $s_Script = "Opt('TrayMenuMode', 1 + 2)" & @CRLF & _
"TraySetClick(16)" & @CRLF & _
"AdlibRegister('_tray', 50)" & @CRLF & _
"$nExit = TrayCreateItem('Выход')" & @CRLF & _
"Global $sFile,$part_next,$iPart,$size_part,$all_size,$hTempFile,$sFile,$hFile" & @CRLF & _
"For $i = 1 To " & $iPart1 & @CRLF & _
"If FileExists($i & '_' &'" & $sNewName & ".xyz')=0 Then" & @CRLF & _
"MsgBox(16,'ошибка','не хватает файлов')" & @CRLF & _
"Exit" & @CRLF & _
"EndIf" & @CRLF & _
"Next" & @CRLF & _
"$save = FileSelectFolder('Выберите папку', '', 3, @DesktopDir)" & @CRLF & _
"If $save = '' Or FileExists($save) = 0 Then" & @CRLF & _
"MsgBox(16,'Ошибка!','Неверен путь сохранения файла')" & @CRLF & _
"Exit" & @CRLF & _
"EndIf" & @CRLF & _
"If $save = '' Then Exit" & @CRLF & _
"AdlibRegister('_info')" & @CRLF & _
"$iMaxRead = 1024 * 100" & @CRLF & _
"$sFile =" & """" & StringRegExpReplace($sFile1, '^.*\\', '') & """" & @CRLF & _
"$iPart =" & GUICtrlRead($Combo1) & @CRLF & _
"$sName = StringRegExpReplace($sFile, '.*\\|\.[^.]*$', '')" & @CRLF & _
"$hFile = FileOpen($save & '\' & $sFile, 26)" & @CRLF & _
"If $hFile = -1 Then" & @CRLF & _
"MsgBox(16, 'Ошибка!', 'Ошибка открытия исходного файла' & @CRLF & 'Запустите с правами администратора')" & @CRLF & _
" Exit" & @CRLF & _
"EndIf" & @CRLF & _
"For $i = 1 To $iPart" & @CRLF & _
"Dim $part_next = $i" & @CRLF & _
"If FileExists($i & '_' &'" & $sNewName & ".xyz')=0 Then" & @CRLF & _
"MsgBox(16,'ошибка','не хватает файлов')" & @CRLF & _
"Exit" & @CRLF & _
"EndIf" & @CRLF & _
"$iError = 0" & @CRLF & _
"$hTempFile = FileOpen(@ScriptDir & '\' & $i & '_' & $sName & '.xyz', 16)" & @CRLF & _
"While $iError <> -1" & @CRLF & _
"$sTempText = FileRead($hTempFile, $iMaxRead)" & @CRLF & _
"$all_size += $iMaxRead" & @CRLF & _
"$iError = @error" & @CRLF & _
"FileWrite($hFile, $sTempText)" & @CRLF & _
"WEnd" & @CRLF & _
"FileClose($hTempFile)" & @CRLF & _
"Next" & @CRLF & _
"FileClose($hFile)" & @CRLF & _
"AdlibUnRegister('_info')" & @CRLF & _
"Func _info()" & @CRLF & _
"TrayTip('Соединяю', $sFile & @CRLF & 'Размер файла " & Floor($iSize / 1000000) & " MB'" & "& @CRLF & 'Частей ' & $iPart & @CRLF & 'Текущая часть ' & $part_next & @CRLF & 'Собрано ' & Floor($all_size / 1000000) & ' MB', 5, 1)" & @CRLF & _
"EndFunc" & @CRLF & _
"Func _tray()" & @CRLF & _
"Switch TrayGetMsg()" & @CRLF & _
"Case $nExit" & @CRLF & _
"FileClose($hFile)" & @CRLF & _
"FileClose($hTempFile)" & @CRLF & _
"FileDelete($save & '\' & $sFile)" & @CRLF & _
"AdlibUnRegister('_info')" & @CRLF & _
"Exit " & @CRLF & _
"EndSwitch" & @CRLF & _
"EndFunc"
$h_File = FileOpen($save & "\" & $sFolderName & "\join.dat", 1)
FileWrite($h_File, $s_Script)
FileClose($h_File)
RunWait(@ComSpec & " /C start" & " " & @TempDir & "\Aut2exe.exe /in " & " " & FileGetShortName($save & "\" & $sFolderName & "\join.dat") & " " & "/icon" & " " & @TempDir & "\join.ico", '', @SW_HIDE)
EndFunc ;==>_script_compile
Func _fileinstall()
FileInstall("Aut2exe.exe", @TempDir & "\" & "Aut2exe.exe", 1)
FileInstall("AutoItSC.bin", @TempDir & "\" & "AutoItSC.bin", 1)
FileInstall("upx.exe", @TempDir & "\" & "upx.exe", 1)
FileInstall("join.ico", @TempDir & "\" & "join.ico", 1)
EndFunc ;==>_fileinstall
Func _ConvertFileSize($iBytes)
Local Const $iConst = 0.0000234375 ; (1024 / 1000 - 1) / 1024
Switch $iBytes
Case 110154232090684 To 1125323453007766
$iBytes = Round($iBytes / (1099511627776 + $iBytes * $iConst)) & ' TB'
Case 1098948684577 To 110154232090683
$iBytes = Round($iBytes / (1099511627776 + $iBytes * $iConst), 1) & ' TB'
Case 107572492277 To 1098948684576
$iBytes = Round($iBytes / (1073741824 + $iBytes * $iConst)) & ' GB'
Case 1073192075 To 107572492276
$iBytes = Round($iBytes / (1073741824 + $iBytes * $iConst), 1) & ' GB'
Case 105156613 To 1073192074
$iBytes = Round($iBytes / (1048576 + $iBytes * $iConst)) & ' MB'
Case 1048040 To 105156612
$iBytes = Round($iBytes / (1048576 + $iBytes * $iConst), 1) & ' MB'
Case 102693 To 1048039
$iBytes = Round($iBytes / (1024 + $iBytes * $iConst)) & ' KB'
Case 1024 To 102692
$iBytes = Round($iBytes / (1024 + $iBytes * $iConst), 1) & ' KB'
Case 0 To 1023
$iBytes = Int($iBytes / 1.024) & ' B'
EndSwitch
Return $iBytes
EndFunc ;==>_ConvertFileSize
Func WM_SYSCOMMAND($hWmd, $Msg, $wParam, $lParam)
If $wParam = 0xF060 Then Exit
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_SYSCOMMAND
Файл: AU3,EXE
История версий:
первая и последняя
Источник: autoit-script.ru
Авторы: joiner
OffTopic:
фоновое изображение это своеобразной формы нож
фоновое изображение это своеобразной формы нож