Как сделать 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/.