Eu descobri depois de brincar com ele:
:: zip
"C:\Program Files-Zipz.exe" a archive.exe -mmt -mx5 -sfx dirname
pause
Eu olhei em todos os lugares e não consegui encontrar uma resposta direta de ninguém.
Se eu quiser empacotar o conteúdo de C: \ Temp em um arquivo chamado Temp.exe (no formato 7z) que é autoextraível, como faço isso em um arquivo de lote?
Isso não funciona:
"C:\Program Files-Zipz.exe" a -t7z -mx5 -sfx 7z.sfx directoryname archive.exe -mmt
O que eu obtenho é um arquivo auto-extraível chamado 7z.sfx. Não consigo descobrir isso.
O problema que você estava tendo é que o 7-zip não gosta de espaços nos argumentos. Então o que você queria era algo mais como:
"C:\Program Files-Zipz.exe" a archive.exe -mmt -mx5 -sfx7z.sfx dirname
Isso deve funcionar:
"C:\Program Files-Zipz.exe" a -t7z -mx5 -sfx archive.exe directoryname -mmt
(PS: Adicione Program Files-zip
à sua variável de ambiente PATH
, lá você pode acessar o arquivo diretamente como 7z.exe
em vez de "C:\Program Files-Zipz.exe"
)
Mantenha-o básico. O manual diz o padrão:
7z
5
(use 0
para cópia e 9
para ultra ) -mmt
é para multiencadeamento e pode ser antiquado, pois o manual não tem sua definição.) Então, isso dá a resposta básica como:
7z a -sfx archive.exe dir
Com o 7-zip existe uma versão de linha de comando disponível chamada 7z.exe, você pode baixá-lo do site do 7-zip. Para criar um instalador de extração automática, use o sinalizador -sfx seguido de um número para a quantidade de compactação.
Tags command-line zip batch-file 7-zip