programas por para extraer descomprimir descargar con comprimir como bat archivos archivo windows batch-file

windows - extraer - crear un script por lotes para descomprimir un archivo sin herramientas zip adicionales



como extraer archivos zip en windows 10 (5)

Aquí está mi visión general sobre las capacidades integradas de zi / descomprimir (comprimir / descomprimir) en Windows: ¿cómo puedo comprimir (/ comprimir) y descomprimir (/ descomprimir) archivos y carpetas con archivos por lotes sin usar herramientas externas?

Para descomprimir un archivo puede usar este script :

zipjs.bat unzip -source C:/myDir/myZip.zip -destination C:/MyDir -keep yes -force no

Estoy tratando de crear un script .bat para Windows 7 x64 para crear una carpeta, descomprimir un archivo en esa carpeta sin tener que usar complementos adicionales como 7zip o descomprimir. He estado buscando y parece que Windows no tiene builtins para permitir descomprimir fácilmente al comando. ¿Puedo descomprimir / expandir archivos sin complementos adicionales?


Aquí hay una solución rápida y simple usando PowerShell:

powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace(''C:/extractToThisDirectory''); $zip = $shell.NameSpace(''C:/extractThis.zip''); $target.CopyHere($zip.Items(), 16); }"

Esto usa la funcionalidad de extracción incorporada del Explorador y también mostrará la ventana de progreso de extracción típica. El segundo parámetro 16 de CopyHere responde todas las preguntas con yes.


Otro enfoque para este problema podría ser crear un ejecutable autoextraíble (.exe) usando algo como winzip y usarlo como el vector de instalación en lugar del archivo zip. Del mismo modo, podría usar NSIS para crear un instalador ejecutable y usarlo en lugar del zip.


Prueba esto:

@echo off setlocal cd /d %~dp0 Call :UnZipFile "C:/Temp/" "c:/path/to/batch.zip" exit /b :UnZipFile <ExtractTo> <newzipfile> set vbs="%temp%/_.vbs" if exist %vbs% del /f /q %vbs% >%vbs% echo Set fso = CreateObject("Scripting.FileSystemObject") >>%vbs% echo If NOT fso.FolderExists(%1) Then >>%vbs% echo fso.CreateFolder(%1) >>%vbs% echo End If >>%vbs% echo set objShell = CreateObject("Shell.Application") >>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items >>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip) >>%vbs% echo Set fso = Nothing >>%vbs% echo Set objShell = Nothing cscript //nologo %vbs% if exist %vbs% del /f /q %vbs%

Revisión

Para hacer que realice la descompresión en cada archivo zip creando una carpeta para cada uso:

@echo off setlocal cd /d %~dp0 for %%a in (*.zip) do ( Call :UnZipFile "C:/Temp/%%~na/" "c:/path/to/%%~nxa" ) exit /b

Si no desea que cree una carpeta para cada archivo comprimido, cambie la Call :UnZipFile "C:/Temp/%%~na/" "c:/path/to/%%~nxa" para Call :UnZipFile "C:/Temp/" "c:/path/to/%%~nxa"


Si tiene PowerShell 5.0 o superior (preinstalado con Windows 10 y Windows Server 2016):

powershell Expand-Archive your.zip -DestinationPath your_destination