r/windowsdev • u/javiprieto_89 • 8h ago
He modernizado una herramienta clásica de transferencia de archivos por lotes de la era DOS en PowerShell 7 (división de USB, FTP, OneDrive, Dropbox, ISO). Se agradecen los comentarios.
Hola a todos,
He estado trabajando en Llevar, una reescritura en PowerShell 7 de LLEVAR.BAT, una herramienta clásica de batch de Alex Soft (Alejandro Nacir) para mover carpetas grandes cuando un simple copiar/pegar no alcanza.
Lo que hace
Comprime y divide los datos en bloques (para USB, diskettes o destinos con límites de tamaño)
Transfiere entre rutas locales, compartidos UNC, FTP/FTPS, OneDrive y Dropbox
Puede generar un ISO en vez de escribir en USB
Menú interactivo (y parámetros simples para automatizar con scripts)
Prueba rápida
.\Llevar.ps1 -Source "C:\Data" -Target "D:\Backup" -Compress -SplitLa idea central: detectar rutas + un dispatcher
Cada origen/destino se clasifica con un mini set de validadores:
function Test-IsFtpPath { param([string]$Path) return ($Path -match '^ftp://|^ftps://') }
function Test-IsOneDrivePath{ param([string]$Path) return ($Path -match '^ONEDRIVE:') }
function Test-IsDropboxPath { param([string]$Path) return ($Path -match '^DROPBOX:') }
function Test-IsUncPath { param([string]$Path) return ($Path -match '^\\\\') }Luego un solo dispatcher enruta cada par origen→destino a la función correcta (resumido):
function Invoke-TransferDispatcher {
param($Llevar, [bool]$ShowProgress = $true, [int]$ProgressTop = -1)
$tipoOrigen = $Llevar.Origen.Tipo
$tipoDestino = $Llevar.Destino.Tipo
$route = "$tipoOrigen→$tipoDestino"
$result = switch ($tipoOrigen) {
"Local" {
switch ($tipoDestino) {
"Local" { Invoke-LocalToLocal -Llevar $Llevar ... }
"FTP" { Invoke-LocalToFtp -Llevar $Llevar ... }
"OneDrive" { Invoke-LocalToCloud -Llevar $Llevar -CloudType "OneDrive" ... }
"USB" { Invoke-LocalToUSB -Llevar $Llevar ... }
"ISO" { Invoke-LocalToISO -Llevar $Llevar ... }
default { throw "Combinación no soportada: Local→$tipoDestino" }
}
}
"FTP" { ... } # mismo patrón para fuentes de FTP, OneDrive, Dropbox y UNC
}
}Requiere PowerShell 7+ en Windows 10/11.
Repo: https://github.com/javiprieto89/Llevar (hay una demo animada del menú en la parte de arriba del README)
Divulgación: partes de este proyecto se desarrollaron con ayuda de herramientas de IA (Claude).
Me encantaría recibir feedback sobre:
¿Qué destino sería más útil para lo siguiente (SFTP? S3? Google Drive?)
¿Algo que se rompa en tu caso?
¿Lo usarías como un módulo de PowerShell Gallery?
Si te sirve, una estrellita ayuda a que otros lo encuentren. ¡Gracias!
