【Tips】ZIPファイルをコマンドライン実行で展開する
こんにちは。
自称)BizRobo!エンジニアのもりりんです。
今回は、「ZIPファイルをコマンドライン実行で展開する」というテーマです。
Windowsの標準機能であるPowerShellでの全展開と、7-Zipを利用した部分展開の方法をご紹介します。
ではでは、サクサクと進めていきましょー。
コマンドプロンプトとPoerShell
Windowsの画面上でZIPファイルを展開することは、簡単ですよね。
しかし、コマンドで同じことを試そうとすると、コマンドプロンプト(cmd)にはZIPを展開できる機能がないためできません。
その代わり、Windows7から登場したコマンドプロンプトの問題点や使い勝手を改良したPowerShell(ps)を利用すると解決が可能です。
試しにPowerShellで、現在参照しているフォルダ(カレントディレクトリ)を表示する「pwd」コマンドを実行します。
Pathと表示されますね。
続いて、コマンドプロンプトで同じコマンドを実行します。
コマンドが存在しないエラーが表示されていますね。
「pwd」コマンドは、PowerShellでは実行できるが、コマンドプロンプトでは実行できないと分かります。
では、コマンドプロンプトからPowerShell経由で「pwd」コマンドを実行します。
今回はシンプルなので、「powershell PowerShellのコマンド」で実行できます。
PowerShellで実行した際と、同じ結果となりました。
コマンドプロンプトでしか実行できない環境の場合、こうした工夫で上手くいくこともありますので、是非チャレンジしてみてください。
今回ご紹介するBizRobo!のコマンドライン実行では、内部でコマンドプロンプトを実行しているため、必要に応じてコマンドプロンプトからPowerShellを呼び出すようなコマンドを作成する必要があることにご注意ください。
PowerShellでZIPファイルを全展開する
Windosの画面上では、右クリックで簡単にZIPファイルを展開できますが、コマンドになるとそうはいきません。
何故なら、コマンドプロンプトにZIPファイルの関する圧縮/展開コマンドが用意されていないからです。
そのため、PowerShellを利用して圧縮/展開を実現します。
今回は、展開方法をご紹介します。
展開するPowerShellコマンドは、次です。
コマンドプロンプトやPowerShellでは半角スペースは区切り文字として扱われます(CSVにおけるカンマと同じ役割)。
パス内に半角スペースを含んだときも正常に動作するように""(ダブルクォーテーション)で囲んでおきます。
では、実際にPowerShellに入力して展開されるか確認します。
BizRobo!で実行する場合は、先頭に「powershell」をつけておきましょう。
先程と同じフォルダに保存しますが、今回はフォルダ内に存在しないフォルダ「BizRobo」を指定してみましょう。
コマンドライン実行でPowerShellが実行すると、BizRoboフォルダが自動作成され、その中に展開されたフォルダが確認できます。
7-ZipでZIPファイルを部分展開する
先程示したようにPowerShellの「Expand-Archive」コマンドは、ZIPファイルから一部のファイル、もしくは特定の拡張子(*.csvのような)のみ抽出するといった器用なことはできず、全展開のみ可能となっています。
そういった操作を簡単に実現するには、ファイルの圧縮/展開に特化したアプリを利用するようにしましょう。
Windowsでの圧縮/展開アプリは、「7-Zip」がよく利用されているかと思います。
今回は、そちらのツールを利用したZIPファイルの部分展開についてご紹介します。
※アプリのインストールについては、利用規約等を確認し、ご自身の判断でお願いします。
【「7-Zip」等のアプリを利用する理由】
インターネット経由でダウンロードしたファイルをWindowsの標準機能で展開すると、ファイル名が文字化け(または、ファイルの破損)を起こすことがあります。
Webサービスの内部で利用される文字コードは「UTF-8」が標準になっていますが、日本語用のWindowsは「SHIFT-JIS(SJIS)」や「Windows-31J」といった文字コードを採用しているため、異なる文字コード間で変換した際の差異により文字化けが発生します。
そういった文字コード間の差異を解消するために、様々な文字コードに対応したサードパーティ製のアプリを導入します。
7-Zipを利用したコマンドは、次になります。
コマンドのルールに従って、「C:¥Users¥ユーザ名¥Desktop¥テスト¥サンプル.zip」から「サンプル.txt」のみ取り出すコマンドを作成してみましょう。
フォルダやZIPファイルを指定するに文字内に半角スペースが含まれている場合は、""で囲んでおきましょう。
※ 見栄えのため改行しています。
今回は、コマンドプロンプトから実行可能ですので、入力して実行してみましょう。
特定の拡張子を指定したい場合は、「-ir!」にワイルドカードを用いて「-ir!*.csv」に変更すればCSVファイルのみ展開も可能です。
最後に、BizRobo!での設定を見てましょう。
最後に
今となっては、Windowsは画面で操作するものという認識が広まっていますが(むしろ、コマンドなんか触ったことない方のほうが多いかも...)、GUI(画面)が充実するまではCUI(コマンドプロンプト)で操作することが当たり前でした。
現在は見やすくリッチな画面が好まれるようになった反面、操作は複雑になってしまい、コマンド操作の方が楽にできることが多くなっているとも感じます。
そういった時にコマンドプロンプトやPowerShellの機能を理解していると、普段使いやBizRobo!での操作が格段便利になります。
今回はZIPファイルの展開がテーマでしたが、他にもファイル圧縮やbatファイルの実行、Excelマクロ(VBS)の実行等々色々できますので、是非調べてチャレンジしてみてください。
最後までお読みいただきありがとうございました。
また、次回をお楽しみに!