Execute o comando "tar -cf" do arquivo em lote "enviar para" para .tar.gz um arquivo rapidamente

Execute o comando "tar -cf" do arquivo em lote "enviar para" para .tar.gz um arquivo rapidamente

Eu instalei oGNU tar para Windowspara acelerar o tar-ing de arquivos, para que eu não precise abrir o 7zip duas vezes para tar e depois gzip um arquivo.

Para acelerar ainda mais o processo, tentei escrever um arquivo em lote de envio parecido com este:

tar -cf %1.tar.gz %1

O comando funciona bem no terminal (quando eu o abro no meu diretório de trabalho) e seria algo como:

tar -cf myfile.tar.gz myfile.txt

No entanto, quando executo o arquivo em lote de envio, a entrada acaba sendo:

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

Recebo este erro do 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

Não tenho certeza do que há de errado aqui, mas tenho certeza de que não é um problema com o tar, mas sim alguma confusão com caminhos e nomes de arquivos.

Eu queria saber se existe uma maneira simples e agradável de fazer isso com um script em lote (talvez obter APENAS o nome do arquivo como argumento em vez do caminho completo) ou precisarei fazer algo mais elaborado?

Responder1

Parece-me que o tar não aceita o caminho completo para o arquivo que está sendo criado. Você deve primeiro modificar seu arquivo em lote para cd na pasta desejada, por exemplo

cd "%~dp1" 

e então use

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

As aspas são usadas aqui para acomodar nomes que contêm espaços.

informação relacionada