Como passar vários arquivos para zip em um único comando usando 7 zip?

Como passar vários arquivos para zip em um único comando usando 7 zip?

Eu tenho uma pasta que conterá os arquivos mencionados abaixo:

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

Dos quais destino1.txt, destino4.txt, destino6.txt são do lote1.

Estou usando 7zippara compactar os arquivos.

Posso passar esses 3 arquivos em uma única etapa para criar DestinyTest.zip?

É possível?

Responder1

Posso passar esses 3 arquivos em uma única etapa para criar DestinyTest.zip?

Você pode usar a versão de linha de comando do 7zip, que é 7z.

Em uma linha de comando:

7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
  • a- Adiciona arquivos ao arquivo.
  • -tzip- Especifica o tipo de arquivo (estamos criando um ziparquivo).

Leitura adicional

Responder2

Se você tiver um arquivo listando os arquivos para fazer o zip, por exemplo

crie uma lista de arquivos para arquivar, um em cada linha. Esta é uma lista @, desde os dias do DOS, vários proggies farão isso para cada linha.

Você pode criar esse arquivo com dir /b destin*.* > zipme.lste, em seguida, remover linhas em um editor ASCII (bloco de notas ou edição).

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

Isso encontrará zipme.lst e adicionará todos os arquivos listados nele. Pode ser mais longo que a linha de comando e você tem algum controle sobre ela.

Responder3

Eu tive um problema semelhante e queria fazer isso com umscript em lote. Aqui está como:

No exemplo abaixo, o script procura todos os arquivos .csv começando com "cell_cfg" e "slave_cfg", os coleta e os compacta em um arquivo chamado 'cfg.7z' armazenado em um subdiretório chamado '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 o caminho do seu 7z.exe e os nomes dos arquivos/pastas. Se você quiser .zip em vez de .7z, renomeie as linhas:

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

em

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

)

Salvei como 'zip_cfg.bat' e coloquei na pasta com os arquivos que desejo compactar. Aí posso chamar na linha de comando: primeiro, navegue até a pasta com os arquivos, depois é só chamar:

zip_cfg.bat

Caso você queira compactar todos os arquivos da pasta ("*"), a parte 'FIND /I "zip_cfg.bat" 1>NUL' impede que o script compacte o próprio arquivo em lote.

Espero que isso ajude alguém... :)

informação relacionada