Os dejo este source de un troceador de archivos, con él puedes dividir archivos en trozos más pequeños o unirlos en 1 solo (estilo hacha, winrar...). Espero os sirva.

Código: Seleccionar todo

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\VENTA\iconos\38.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WinAPI.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\portatil\desktop\trozeador de archivos\form1.kxf
$Form1_1 = GUICreate("Spliter de Archivos                                  Autor: DuNeD@i", 466, 149, 193, 124)
$Main = GUICtrlCreateGroup("Main", 8, 0, 449, 137)
$InputRuta = GUICtrlCreateInput("Ruta", 16, 20, 353, 21)
$Button1 = GUICtrlCreateButton("Buscar", 376, 18, 73, 25)
$Group2 = GUICtrlCreateGroup("  Megabytes  ", 16, 48, 433, 81)
$InputTamanoArchivo = GUICtrlCreateInput("100", 32, 70, 89, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_NUMBER))
$rar = GUICtrlCreateCombo("rar", 32, 94, 89, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "jpg|doc|docx|exe|xls|mp3|mp4|pif|com|src|pdf|txt")
$Button2 = GUICtrlCreateButton("Partir", 129, 67, 63, 25)
$Button3 = GUICtrlCreateButton("Unir", 130, 91, 63, 25)
$Label1 = GUICtrlCreateLabel("Tamaño", 230, 72, 49, 17)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("000000", 280, 72, 90, 17, $SS_CENTER)
$Label3 = GUICtrlCreateLabel("Mb", 370, 72, 30, 17)
$Label4 = GUICtrlCreateLabel(@OSVersion & '  Compi: ' & @OSBuild & ' (' & @OSArch & ') [' & @OSServicePack & ']', 200, 96, 236, 17, $SS_CENTER)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $Open, $ValOpen

While 1
   Local $Ru = GUICtrlRead($InputRuta), $In = StringInStr($Ru, ".", -1), $TFile = GUICtrlRead($InputTamanoArchivo)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
            Exit
         Case $Button1 ;Abrir Archivo
            Abrir()
            $Label2 = GUICtrlSetData($Label2, CorDec(LongFile($Open)/1048576, 2))
         Case $Button2 ;Dividir en trozos
            Dividir($Ru, $TFile, 2)
         Case $Button3 ;Unir
            Juntar(StringMid($Ru, 1, $In + 3), GUICtrlRead($rar))
    EndSwitch
 WEnd

 #cs ----------------------------------------------------------------------------
 Function:    Apertura de Dialog
 #ce ----------------------------------------------------------------------------

Func Abrir()
   $Open = FileOpenDialog("Abrimos el archivo a dividir", @DesktopDir,"Todos los archivos (*.*)")
   GUICtrlSetData($InputRuta, $Open)
EndFunc

#cs ----------------------------------------------------------------------------
 AutoIt Version:     3.3.8.1
 Author:             DuNeD@i
 Script Function:    Determina el tamaño de un archivo
 Uso:                LongFile($File)
 Ejemplo:            LongFile(@DesktopDir & "\Bolita.exe")
#ce ----------------------------------------------------------------------------

Func LongFile($File)
   Local $Binary, $Tam, $TamFinMsg, $Uni
   $Binary = _WinAPI_CreateFile($File, 2, 2)
   $Tam = _WinAPI_GetFileSizeEx($Binary)
   _WinAPI_CloseHandle($Binary)
   Return $Tam
EndFunc

#cs ----------------------------------------------------------------------------
 AutoIt Version:     3.3.8.1
 Author:             DuNeD@i
 Script Function:    Sirve para dividir un archivo en varios archivos de un deteminado tamaño, ejemplo archivos cortados con winrar (eo1.rar, eo2.rar,... eo24.rar)
 Uso:                Dividir(Ruta, Tamaño, Unidad(KB/MB))
 Ejemplo:            Dividir(@DesktopDir & "\Untitled.rar", 10, 2)
#ce ----------------------------------------------------------------------------

Func Dividir($Ruta, $Peso, $Unidad)
    Local $File, $Long, $Tam, $TamFinMsg, $TamFinArcGen, $Info, $File1, $Lectura, $Binary, $BinaryResul, $Final, $Binary0, $Problem
    $Tam = LongFile($Ruta)
   If $Unidad < 1 Or $Unidad > 2 Then
      Msgbox (1,'Error', 'Debes introducir "1" para dividir en Kb o "2" para dividir en Mb')
      Exit
   EndIf
   If $Unidad = 2 Then ; Si están seleccionado Megas
      $Long = $Peso * 1048576
      $Problem = $Peso * 1048576
      $TamFinMsg = $Tam / 1048576
      $TamFinArcGen = Int($TamFinMsg / $Peso) +1
   Else ; Si está seleccionado Kb
      $Long = $Peso * 1024
      $Problem = $Peso * 1024
      $TamFinArcGen = Int($Tam / $Long)
   EndIf
   If $Tam >= $Long Then
      $Binary = FileOpen($Ruta, 16)
      $Lectura = FileRead($Binary)
      FileClose($Binary)
      $File1 = FileOpen($Ruta & "1", 1)
      $Info = BinaryMid($Lectura, 1, $Long)
      FileWrite($File1, $Info)
      FileClose($File1)
      For $i = 1 To Int($Tam / $Long)
         sleep (300)
         $Binary0 = FileOpen($Ruta & $i +1, 1)
         $Final = BinaryMid($Lectura, ($i * $Long) + 1, $Long)
         FileWrite($Binary0, $Final)
         FileClose($Binary0)
         If Contar_Archivos_Escritorio($Ruta, 1, 100) >=  Int($Tam / $Long) + 1 Then
            ExitLoop
         EndIf
      Next
      ;Sleep (2000)
      If $Unidad = 2 Then
         MsgBox(0,'Información', "Archivos Creados en: " & $Ruta & @CRLF & "Tamaño Archivo Original: " & CorDec($TamFinMsg, 2) & " Mb" & @CRLF & "Tamaño de Archivos generados: " & $Peso & " Mb" & @CRLF & "Número de Archivos generados: " & $TamFinArcGen)
      Else
         MsgBox(0,'Información', "Archivos Creados en: " & $Ruta & @CRLF & "Tamaño Archivo Original: " & $Tam & " Kb" & @CRLF & "Tamaño de Archivos generados: " & $Peso & " Kb" & @CRLF & "Número de Archivos generados: " & $TamFinArcGen)
      EndIf
   Else
      MsgBox(0, 'Error', 'El Tamaño de los archivos a generar no puede ser mayor que el tamaño del archivo original')
   EndIf
EndFunc

#cs ----------------------------------------------------------------------------
 AutoIt Version:     3.3.8.1
 Author:             DuNeD@i
 Script Function:    Sirve para juntar archivos con el mismo nombre pero con distinto índice, ejemplo archivos cortados con winrar (eo1.rar, eo2.rar,... eo24.rar)
 Uso:                Juntar(Ruta, Extensión)
 Ejemplo:            Juntar(@DesktopDir & "\archivo creado.rar","rar")
#ce ----------------------------------------------------------------------------

Func Juntar($Ruta, $Ext)
   Local $Delta, $Final, $NumberFiles = Contar_Archivos_Escritorio($Ruta, 1, 100)
   For $x = 1 To $NumberFiles
      $Delta = FileRead($Ruta & $x)
      $Final = RutaFile($Ruta) & "\Archivo_Creado" & "." & $Ext
      FileOpen($Final, 1)
      FileWrite($Final , $Delta)
      $Delta = ""
      FileClose ($Final)
   Next
   MsgBox(0,'Información',"Archivo creado satisfactoriamente" & @CRLF & "Gracias por utilizar esta aplicación" & @CRLF & "Autor: DuNeD@i")
EndFunc

#cs ----------------------------------------------------------------------------
 AutoIt Version:     3.3.8.1
 Author:             DuNeD@i
 Script Function:    Sirve para contar archivos con el mismo nombre pero con distinto índice, ejemplo archivos cortados con winrar (eo1.rar, eo2.rar,... eo24.rar)
 Uso:                ConsoleWrite(Contar_Archivos_Escritorio("Nombre del Archivo en trozos, Número del primer trozo, Número de Archivos a comprobar))
 Ejemplo:            ConsoleWrite(Contar_Archivos_Escritorio("Untitled, 1, 100))
#ce ----------------------------------------------------------------------------

Func Contar_Archivos_Escritorio($Ruta, $Ind, $NumFiles)
   Local $Count, $Arc, $Count = 0
   For $i = $Ind To $NumFiles ;Se puede subir el número de Archivos
      $Arc = $Ruta & $i
      If FileExists($Arc) Then
         $Count += 1
      Else
          ExitLoop
      EndIf
   Next
   Return $Count
EndFunc

#cs ----------------------------------------------------------------------------
 AutoIt Version:     3.3.8.1
 Author:             DuNeD@i
 Script Function:    Sirve para cortar decimales
 Uso:                ConsoleWrite(CorDec(Cadena Numérica Decimal, Numero de Decimales))
 Ejemplo:            ConsoleWrite(CorDec("456.5673433", 2)) --> Devuelve: 456.56
#ce ----------------------------------------------------------------------------

Func CorDec($Numb, $Dec)
   Local $Alpha, $Beta, $Final, $Result
   $Alpha = StringInStr($Numb, ".")
   If $Alpha = 0 Then
      Return $Numb
   Else
      $Beta = StringMid($Numb, 1, $Alpha)
      For $x = 1 To 2
         $Final = StringMid($Numb, $Alpha + $x, 1)
         $Result = $Result & $Final
      Next
      Return $Beta & $Result
   EndIf
EndFunc

#cs -------------------------------------------------------------------------------------------------------------------
 AutoIt Version:      3.3.8.1
 Author:              DuNeD@i
 Script Function:     Devuelve el nombre de la ruta sin el nombre del archivo.
 Uso:                 RutaFile($Ruta)
 Ejemplo:             MsgBox(0,'', RutaFile("C:\perverso\merlin\Acapulcodelosheuvos\mecagoentoloquesemenea.jpg") --> Devuelve C:\perverso\merlin\Acapulcodelosheuvos
#ce -------------------------------------------------------------------------------------------------------------------

Func RutaFile($Ruta)
   Local $Name, $Final, $ppp
   ;$Ruta = @ScriptFullPath
   $Name = StringInStr($Ruta, "\", 0, -1)
   $Final = StringMid($Ruta, 1, $Name -1)
   Return $Final
EndFunc
Spyren Private Crypter-Binder [Autoit]
Crypter Online 0/35 (Terminado)
Responder

Volver a “Fuentes”