¿Cómo dividir archivos en Windows rápidamente?

La transferencia de archivos grandes es una molestia seria, especialmente si desea cargarlos en Internet o usar una unidad extraíble con poco espacio de almacenamiento.

Es posible comprimir y dividir archivos usando herramientas de archivo. Sin embargo, no puede usar individualmente los archivos divididos sin descomprimirlos en un solo archivo.

Por lo tanto, en este artículo, proporcionaremos diferentes formas con las que puede dividir archivos mientras hace que ciertos archivos como audio, video, texto, etc., sean legibles incluso en estado dividido.

Tabla de contenido

Cómo dividir archivos en Windows

Estos son los métodos que puede usar para dividir archivos en Windows:

Dividir archivos usando un script personalizado

Windows no tiene una utilidad o aplicación integrada para dividir un archivo. Por lo tanto, hemos creado un script de PowerShell personalizado y fácil de usar para dividir y volver a unir un archivo para ayudarlo.

Dado que la mayoría de las personas necesitan dividir un archivo de acuerdo con un tamaño particular, nuestro script personalizado implementa solo esta función. Puede usarlo para crear archivos divididos con un tamaño de MB de entrada.

Si desea dividir utilizando cualquier otro tamaño, puede cambiar el código como se indica en los comentarios (líneas seguidas de #).

Para dividir el archivo

Primero, abra Windows PowerShell como administrador e ingrese el comando Get-ExecutionPolicy -Scope CurrentUser . Puede escribir powershell en Ejecutar y presionar Ctrl + Shift + Enter para ejecutarlo como administrador.

Si muestra Restringido, Indefinido o Todo firmado, no puede ejecutar el script. Para cambiarlo, ingrese Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned .

Si desea obtener más información, consulte nuestro artículo sobre La ejecución de secuencias de comandos está deshabilitada en este sistema .

Después de cambiar la política de ejecución, siga las instrucciones a continuación:

  1. Abre un editor de texto. Para abrir el bloc de notas, ingrese notepad en Ejecutar.
  2. Copie el siguiente código en el editor de texto:
 # Function to Split Filefunction Split-File{ param ( [Parameter(Mandatory)] [String] $Path, $SavePath, [Int32] $PartSizeBytes = 1MB ) try { # Get separate parts of filename to construct new names $NameWithoutExtension = [IO.Path]::GetFileNameWithoutExtension($Path) $ParentDirectory = [IO.Path]::GetDirectoryName($Path) $Extension = [IO.Path]::GetExtension($Path) # Calculate total number of chunks possible $OriginalFile = New-Object System.IO.FileInfo($Path) $TotalPartsCount = [int][Math]::Log10([int]($OriginalFile.Length / $PartSizeBytes) + 1) + 1 $ReadFile = [IO.File]::OpenRead($Path) $Count = 0 $Chunk = New-Object Byte[] $PartSizeBytes $DataLeftFlag = $true # Read chunks till data is left while($DataLeftFlag) { # read individual chunks $ReadBytes = $ReadFile.Read($Chunk, 0, $Chunk.Length) # create filenames for the chunks $chunkFileName = "$SavePath$NameWithoutExtension.{0:D$TotalPartsCount}$Extension" -f $Count $Output = $Chunk # For the final part, where the chunksize is less if ($ReadBytes -ne $Chunk.Length) { $DataLeftFlag = $false # No more data # Use the final chunk as the last part by shrinking the bytesize $Output = New-Object Byte[] $ReadBytes [Array]::Copy($Chunk, $Output, $ReadBytes) } # save the chunk to a file [IO.File]::WriteAllBytes($chunkFileName, $Output) ++$Count } $ReadFile.Close() } catch { throw "Can't split file ${Path}: $_" }}#Create dialog box to open fileAdd-Type -AssemblyName System.Windows.Forms$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog$null = $FileBrowser.ShowDialog()# Ask for size # CHANGE THIS SECTION to ask for size in other units# 1KB=1024Bytes, 1MB = 1024KB, 1GB = 1024TB$NumMB = read-host -Prompt "Enter Size in MB"$NumBytes = 1024*1024*($NumMB -as [int]) # This section converts the MB input to bytes#Create dialog box to save fileAdd-Type -AssemblyName System.Windows.Forms$SaveFileBrowser = New-Object System.Windows.Forms.FolderBrowserDialog$null = $SaveFileBrowser.ShowDialog()# Call Split-File Function to Split fileSplit-File -SavePath $SaveFileBrowser.SelectedPath -Path $FileBrowser.FileName -PartSizeBytes $NumBytes -Verbose
  1. Vaya a Archivo > Guardar como .
  2. Establezca Guardar como tipo en Todos los archivos y Nombre de archivo en Split.ps1 .
  3. Puede establecer cualquier ubicación que desee. Una vez que haya terminado, haga clic en Guardar.
  4. Ahora, navegue hasta el archivo Split.ps1 .
  5. Haga clic derecho sobre él y seleccione Ejecutar con PowerShell.
  6. Navegue y seleccione el archivo que necesita dividir.
  7. Haga clic en Abrir.
  8. Ingrese el tamaño que desea para cada parte dividida.
  9. Navegue y seleccione la carpeta de salida y haga clic en Aceptar.

También puede abrir PowerShell, cambiar el directorio a la ubicación del archivo Split.ps1 e ingresar .Split.ps1 para ejecutarlo.

Para unir el archivo

Primero, asegúrese de que la política de ejecución de PowerShell permita ejecutar scripts (consulte la sección anterior). Luego, siga las instrucciones a continuación para unir los archivos:

  1. Asegúrese de que los archivos que desea unir tengan la misma extensión (no solo en el nombre) estén presentes en la misma ubicación.
  2. Cambie sus nombres como name.xx.extension , donde xx representa el número de parte, por ejemplo, music.00.mp3 .
  3. Abra un editor de texto y copie el siguiente código en el editor.
 # Function to Join Filefunction Join-File{ param ( [Parameter(Mandatory)] [String] $Path, $SavePath ) try { # Get separate parts of filename to construct new names $NameWithoutExtension = [IO.Path]::GetFileNameWithoutExtension($Path) $OutputName = $NameWithoutExtension.Split(".")[0] $ParentDirectory = [IO.Path]::GetDirectoryName($Path) $Extension = [IO.Path]::GetExtension($Path) # Get all files, in order $Files = Get-ChildItem -Path "$ParentDirectory$OutputName.*$Extension" | Sort-Object -Property { $Name = [IO.Path]::GetFileNameWithoutExtension($_.Name) $Part = [IO.Path]::GetExtension($Name) if ($Part -ne $null -and $Part -ne '') { $Part = $Part.Substring(1) } [int]$Part } # Create output file $WriteFile = [IO.File]::OpenWrite($SavePath+""+$OutputName+$Extension) # Write on output file $Files | ForEach-Object { $bytes = [IO.File]::ReadAllBytes($_) $WriteFile.Write($bytes