Pregunta Cómo el archivo 7za sin especificar el nombre del archivo


Digamos que tiene un archivo ejecutable target.exe, ¿hay alguna manera de comprimir este archivo en target.zip sin especificar el nombre del archivo (nombre de salida) usando la línea de comandos 7zip?


1


origen




Respuestas:


No creo que sea posible con la utilidad de línea de comandos sola. los a comando espera un nombre de archivo de archivo (para agregar o crear) y una lista de archivos.

Si intentas sin especificar un nombre de archivo, obtienes un System Error: Incorrect Function porque el primer argumento esperado es un nombre de archivo. Si especifica un ejecutable, por ejemplo, dirá que no es compatible con el tipo de archivo, ya que intentará crear un archivo ejecutable. .exe archivo.

sin embargo: 7-zip es un software de código abierto. Puedes modificar cómo a ¡el comando funciona para esperar diferentes argumentos, o incluso hacer un nuevo cambio propio!

Aquí hay un script de Perl que lancé rápidamente y que debería poder hacer lo que quieras:

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

El script tomará el nombre del primer argumento (antes del . en el nombre del archivo) y usar eso como base para el nombre del archivo. Supuse que estás en Windows por el .exe referencia, cambie la línea shebang si no.

Coloque el script en algún lugar de su PATH y úselo de la siguiente manera:

7z.pl target.exe otherfile someotherfile

Creará un archivo llamado target.7z con esos 3 archivos adjuntos.


3



buena solución interesante - at.


Lo que estás intentando hacer es una función gzip. 7zip admite gzip como uno de sus métodos de descompresión aunque no es compatible con una función zip. Vea la información aquí http://www.gzip.org/.


1