1

Скажем, есть исполняемый файл target.exe, есть ли способ сжать этот файл в target.zip без указания имени архива (выходного имени) с помощью командной строки 7zip?

2 ответа2

3

Я не думаю, что это возможно только с помощью утилиты командной строки. Команда ожидает архивное имя файла (добавить или создать) и список файлов.

Если вы попытаетесь без указания имени архива, вы получите System Error: Incorrect Function поскольку первый ожидаемый аргумент - это имя архива. Например, если вы укажете исполняемый файл, он скажет, что тип архива не поддерживается, так как попытается создать архив .exe .

Однако: 7-zip - это программное обеспечение с открытым исходным кодом. Вы можете изменить , как команда работает , чтобы ожидать различные аргументы, или даже сделать новый выключатель свой собственный!

Вот скрипт Perl, который я быстро скомбинировал, который должен делать то, что вы хотите:

#!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");

Сценарий примет имя первого аргумента (перед . В имени файла) и будет использовать его в качестве основы для имени архива. Я предположил, что вы используете Windows по ссылке .exe , если нет, измените строку shebang.

Разместите скрипт где-нибудь в вашей переменной PATH и используйте его так:

7z.pl target.exe otherfile someotherfile

Он создаст архив с именем target.7z с этими 3 файлами.

1

То, что вы пытаетесь сделать, это функция gzip. 7zip поддерживает gzip как один из методов распаковки, хотя и не поддерживает функцию zip. Смотрите информацию здесь http://www.gzip.org/.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .