アーカイブ内ファイルリストの取得(7-zip)

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 = の行だけ抜き取ることになるか。(別ツールも探せばあるのかも)