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.