(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Cygwin】Windowsでパスワード付きZipを展開するコマンド

スポンサーリンク

はじめに

以下記事の逆バージョンです。

複数に分割された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をスクリプトで展開する手法でした。
ループ処理を組み合わせれば複数ファイル群でも動作させることも可能になるのでご参考になれば幸いです。