假设有一个可执行文件 target.exe,是否有任何方法可以使用 7zip 命令行将此文件压缩为 target.zip 而无需指定存档名称(输出名称)?
答案1
我认为仅使用命令行实用程序是不可能的。该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
,如果不是,请更改 shebang 行。
将脚本放在你的 PATH 中的某个位置并像这样使用它:
7z.pl target.exe 其他文件 其他文件
它将创建一个名为“target.7z
包含这 3 个文件的档案”。
答案2
您尝试执行的是 gzip 函数。7zip 支持 gzip 作为其解压缩方法之一,但不支持 zip 函数。请参阅此处的信息http://www.gzip.org/。