Я установилGNU tar для Windowsдля ускорения сжатия файлов, чтобы мне не приходилось дважды открывать 7zip, чтобы заархивировать файл, а затем сжать его с помощью gzip.
Чтобы еще больше ускорить процесс, я попытался написать пакетный файл отправки, который выглядит следующим образом:
tar -cf %1.tar.gz %1
Команда отлично работает в терминале (когда я открываю ее в рабочем каталоге) и выглядит примерно так:
tar -cf myfile.tar.gz myfile.txt
Однако когда я запускаю пакетный файл отправки, ввод в итоге выглядит так:
tar -cf C:\path\to\myfile.txt.tar.gz C:\path\to\myfile.txt
Я получаю эту ошибку от 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
Я не совсем понимаю, в чем тут проблема, но уверен, что это не проблема tar, а скорее какая-то путаница с путями и именами файлов.
Мне было интересно, есть ли простой и удобный способ сделать это с помощью пакетного скрипта (возможно, получить ТОЛЬКО имя файла в качестве аргумента, а не полный путь) или мне нужно будет сделать что-то более сложное?
решение1
Мне кажется, что tar не принимает полный путь к создаваемому архиву. Вам следует изменить ваш пакетный файл, чтобы сначала перейти в нужную папку, например
cd "%~dp1"
а затем использовать
tar -cf "%~n1.tar.gz" "%~nx1"
Кавычки здесь используются для обозначения имен, содержащих пробелы.