はじめに
以下記事の逆バージョンです。
複数に分割されたZipファイルが送られてきた際に一気にパスワードを解除できます。
環境情報
$ bash --version GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)
$ unzip ... UnZip 6.00 of 20 April 2009, by Info-ZIP.
unzipコマンドをインストールする
apt-cyg
でインストールできます。
$ apt-cyg install unzip ... Package unzip installed
$ which unzip /usr/bin/unzip
パスワード付きZipを解答する
以下でziptest.zipファイルを解凍できます。
$ unzip ziptest.zip Archive: ziptest.zip [ziptest.zip] test.csv password: inflating: test.csv
ただし上記にあるように標準入力によってパスワードを入れる必要があります。
パスワード入力処理を自動化する
expectコマンドを利用します。
同じくapt-cygでインストールを行い
$ apt-cyg install expect Installing expect ... `tcl-8.6.8-1.tar.xz' に保存中 ... tcl-8.6.8-1.tar.xz: 完了 Unpacking... Package tcl requires the following packages, installing: cygwin tzdata zlib0 Package cygwin is already installed, skipping Package tzdata is already installed, skipping Package zlib0 is already installed, skipping Package expect installed
以下のスクリプトにて自動でUnzip処理が可能となります。
$ cat unzipauto.sh #!/bin/bash PW="hogehoge" expect -c " set timeout 5 spawn unzip ziptest.zip expect \"password:\" send \"${PW}\n\" expect \"$\" exit 0 "
終わりに
パスワード付きZipをスクリプトで展開する手法でした。
ループ処理を組み合わせれば複数ファイル群でも動作させることも可能になるのでご参考になれば幸いです。