¿Cómo pasar varios archivos para comprimir con un solo comando usando 7 zip?

¿Cómo pasar varios archivos para comprimir con un solo comando usando 7 zip?

Tengo una carpeta que contendrá los archivos mencionados a continuación:

destiny.txt
destiny1.txt
destiny2.txt
destiny3.txt
destiny4.txt
destiny5.txt
destiny6.txt
destiny7.txt

De los cuales destino1.txt, destino4.txt, destino6.txt son del lote1.

Estoy usando 7zippara comprimir los archivos.

¿Puedo pasar estos 3 archivos en un solo paso para crear DestinyTest.zip?

¿Es posible?

Respuesta1

¿Puedo pasar estos 3 archivos en un solo paso para crear DestinyTest.zip?

Puede utilizar la versión de línea de comando de 7zip, que es 7z.

Desde una línea de comando:

7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
  • a- Agrega archivos para archivar.
  • -tzip- Especifica el tipo de archivo (estamos creando un ziparchivo).

Otras lecturas

Respuesta2

Si tiene un archivo que enumera los archivos para hacer el zip, por ejemplo

cree una lista de archivos para archivar, uno en cada línea. Esta es una lista @, desde la época de DOS, varios programas harán esto para cada línea.

Puede crear un archivo de este tipo con dir /b destin*.* > zipme.lsty luego eliminar líneas en un editor ascii (bloc de notas o editar).

type zipme.lst destiny1.txt destiny4.txt destiny6.txt 7za a -tzip DestinyTest.zip @zipme.lst

Esto encontrará zipme.lst y agregará todos los archivos enumerados en él. Puede ser más largo que la línea de comandos y usted tiene cierto control sobre ella.

Respuesta3

Tuve un problema similar y quería hacerlo con unsecuencia de comandos por lotes. Aquí es cómo:

En el siguiente ejemplo, el script busca todos los archivos .csv que comienzan con "cell_cfg" y "slave_cfg", los recopila y los comprime en un archivo llamado 'cfg.7z' almacenado en un subdirectorio llamado 'zip':

@ECHO OFF
setlocal enableDelayedExpansion
mkdir zip
ECHO collecting filenames...
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
FOR %%i IN (cell_cfg*.csv) DO (
    ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
        SET filenames=!filenames!" "%%i
    )
)
FOR %%i IN (slave_cfg*.csv) DO (
    ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
        SET filenames=!filenames!" "%%i
    )
)
set filenames=%filenames%"
%filenames%

(Ajuste la ruta de su 7z.exe y los nombres de archivos/carpetas. Si desea .zip en lugar de .7z, cambie el nombre de las líneas:

set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z

en

set filenames="C:\Program Files\7-Zip\7z.exe" a -tzip "zip/cfg.zip

)

Lo guardé como 'zip_cfg.bat' y lo coloqué en la carpeta con los archivos que quiero comprimir. Luego puedo llamarlo en la línea de comando: primero, navego hasta la carpeta con los archivos, luego simplemente llame:

zip_cfg.bat

En caso de que desee comprimir todos los archivos en la carpeta ("*"), la parte 'FIND /I "zip_cfg.bat" 1>NUL' impide que el script comprima el archivo por lotes.

Espero que esto ayude a alguien... :)

información relacionada