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 7zip
para 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 umzip
arquivo).
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.lst
e, 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... :)