Ejecute el comando "tar -cf" desde el archivo por lotes "enviar a" a .tar.gz un archivo rápidamente

Ejecute el comando "tar -cf" desde el archivo por lotes "enviar a" a .tar.gz un archivo rápidamente

Instalé elalquitrán GNU para Windowspara acelerar la codificación de archivos tar para no tener que perder el tiempo abriendo 7zip dos veces para tar y luego gzip un archivo.

Para acelerar aún más el proceso, intenté escribir un archivo de envío por lotes que se ve así:

tar -cf %1.tar.gz %1

El comando funciona bien en la terminal (cuando lo abro en mi directorio de trabajo) y se vería así:

tar -cf myfile.tar.gz myfile.txt

Sin embargo, cuando ejecuto el archivo por lotes de envío, la entrada termina siendo:

tar -cf C:\path\to\myfile.txt.tar.gz C:\path\to\myfile.txt

Recibo este error de tar:

C:\path\to\my>tar -cf C:\path\to\my\myfile.txt.tar.gz C:\path\to\my\myfile.txt
tar: Cannot open C:\path\to\my\myfile.txt.tar.gz: Function not implemented
tar: Error is not recoverable: exiting now

No estoy realmente seguro de qué está mal aquí, pero estoy seguro de que no es un problema con tar sino más bien una confusión con las rutas y los nombres de los archivos.

Me preguntaba si hay una forma agradable y sencilla de hacer esto con un script por lotes (tal vez obtener SÓLO el nombre del archivo como argumento en lugar de la ruta completa) o tendré que hacer algo más elaborado.

Respuesta1

Me parece que tar no acepta una ruta completa al archivo que se está creando. Primero debe modificar su archivo por lotes para cd en la carpeta deseada, por ejemplo

cd "%~dp1" 

y luego usar

tar -cf "%~n1.tar.gz" "%~nx1"

Aquí se utilizan comillas para dar cabida a los nombres que contienen espacios.

información relacionada