「送信先」バッチファイルから「tar -cf」コマンドを実行して、ファイルを素早く .tar.gz 化します。

「送信先」バッチファイルから「tar -cf」コマンドを実行して、ファイルを素早く .tar.gz 化します。

私はインストールしましたWindows 用 GNU tarファイルの tar 圧縮を高速化するため、7zip を 2 回開いてファイルを tar 圧縮してから 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する必要があります。例:

cd "%~dp1" 

そして使用する

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

ここでは、スペースを含む名前に対応するために引用符が使用されています。

関連情報