Como 7za arquivo sem especificar o nome do arquivo

1

Digamos que tenha um executável target.exe, existe alguma maneira de compactar este arquivo em target.zip sem especificar o nome do arquivo (nome de saída) usando a linha de comando 7zip?

    
por Stan 01.03.2010 / 20:41

2 respostas

3

Eu não acho que seja possível apenas com o utilitário de linha de comando. O comando a espera um nome de arquivo (para adicionar ou criar) e uma lista de arquivos.

Se tentar sem especificar um nome de arquivo, você receberá um System Error: Incorrect Function porque o primeiro argumento esperado é um nome de arquivo. Se você especificar um executável por exemplo, ele dirá que o tipo de arquivo não é suportado, pois ele tentará criar um .exe archive.

No entanto : o 7-zip é um software de código aberto. Você pode modificar como o comando a funciona para esperar diferentes argumentos, ou até mesmo fazer um novo comutador próprio!

Aqui está um script em Perl que eu rapidamente joguei, que deve ser capaz de fazer o que você quer:

#!C:/Perl/bin/perl.exe

use warnings;
use strict;

exit unless @ARGV;

my $path = "C:\Program Files\7-Zip\7z.exe"; # modify this accordingly
my $infile = (split /\./,$ARGV[0])[0];

system("\"$path\" a $infile @ARGV");

O script pegará o nome do primeiro argumento (antes do . no nome do arquivo) e usará isso como base para o nome do arquivo. Eu assumi que você está no Windows pela referência .exe , altere a linha shebang se não.

Coloque o script em algum lugar em seu PATH e use-o da seguinte forma:

7z.pl target.exe otherfile someotherfile

Ele criará um arquivo chamado target.7z com esses 3 arquivos em anexo.

    
por 01.03.2010 / 20:54
1

O que você está tentando fazer é uma função gzip. O 7zip suporta o gzip como um dos métodos de descompactação, embora não suporte uma função zip. Veja as informações aqui link .

    
por 01.03.2010 / 21:24