windows - comandos - bat para comprimir archivos con 7zip
Script por lotes de Windows para descomprimir archivos en un directorio (4)
Quiero descomprimir todos los archivos en un directorio determinado y conservar los nombres de las carpetas cuando se descomprimen.
La siguiente secuencia de comandos por lotes no funciona del todo. Simplemente arroja un montón de archivos sin ponerlos en una carpeta y ni siquiera termina.
¿Qué pasa aquí?
for /F %%I IN (''dir /b /s *.zip'') DO (
"C:/Program Files (x86)/7-Zip/7z.exe" x -y -o"%%~dpI" "%%I"
)
¿Es posible que algunos de tus archivos zip tengan un espacio en el nombre? Si es así, su primera línea debería ser:
for /F "usebackq" %%I IN (`dir /b /s "*.zip"`) DO (
Tenga en cuenta el uso de `en lugar de ''Ver FOR /?
Prueba esto.
@echo off
for /F "delims=" %%I IN ('' dir /b /s /a-d *.zip '') DO (
"C:/Program Files (x86)/7-Zip/7z.exe" x -y -o"%%~dpI/%%~nI" "%%I"
)
pause
Prueba esto:
for /R "C:/root/folder" %%I in ("*.zip") do (
"%ProgramFiles(x86)%/7-Zip/7z.exe" x -y -o"%%~dpI" "%%~fI"
)
o (si desea extraer los archivos en una carpeta nombrada después del archivo Zip):
for /R "C:/root/folder" %%I in ("*.zip") do (
"%ProgramFiles(x86)%/7-Zip/7z.exe" x -y -o"%%~dpnI" "%%~fI"
)
La respuesta de Ansgar anterior fue más o menos perfecta para mí, pero también quise borrar los archivos posteriores si la extracción fue exitosa. Encontré esto y lo incorporé a lo anterior para dar:
for /R "Destination_Folder" %%I in ("*.zip") do (
"%ProgramFiles%/7-Zip/7z.exe" x -y -aos -o"%%~dpI" "%%~fI"
"if errorlevel 1 goto :error"
del "%%~fI"
":error"
)