Как сделать 7за файла без указания имени архива

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

2 ответа

Решение

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

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

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

Вот скрипт 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 ссылка, измените линию Шебанга, если нет.

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

7z.pl target.exe другой файл someotherfile

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

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

Другие вопросы по тегам