7-zipでは、プログラムに読み取りやすい形でのファイルリストの取得が素直にはやりにくい。
以下の出力は、表形式でスペースや罫線で整形された形となり、人間的には見やすいが機械では処理しにくい。
> 7z.exe l archive.zip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2020-01-01 12:34:56 D.... 0 0 hoge 2020-01-01 12:34:56 D.... 0 0 hoge\huga 2020-01-01 12:34:56 ....A 23553726 2146651792 hoge\huga\piyo.csv ...
以下の2つのオプション -slt -ba
を付けることで、まだ比較的プログラムに読み取りやすい形での出力となる。
> 7z.exe l archive.zip -slt -ba Path = hoge\huga\piyo.csv Size = 2005506 Packed Size = 638340 Modified = 2020-01-01 12:34:56 Attributes = CRC = FFFFFFFF Encrypted = - Method = LZMA:3m Block = 0 Path = hoge\huga\poyo.csv Size = 35328 Packed Size = Modified = 2020-01-01 12:34:56 Attributes = CRC = FFFFFFFF Encrypted = - Method = LZMA:3m Block = 0 ...
単純にファイル名のみを列挙する方法は無いっぽい。
そういうことがしたい場合は、zipファイルであれば、Linuxならzipコマンドが使えるし、Windowsも以下の方法で、Linuxと同様の動作をするzipをインストールした方が速い。
7zの場合は、まぁ上記の方法で Path =
の行だけ抜き取ることになるか。(別ツールも探せばあるのかも)