フリーソフトを使わず超シンプルにコマンドラインでZIP形式のファイル圧縮
公開日 更新日 2017/07/17
Windowsでは、フリーソフトを追加することなくエクスプローラから右クリックメニューを開く等の簡単な操作でZIP形式の圧縮ファイルを作成してファイルを圧縮したり解凍することが出来ます。
しかしながらマウス操作を伴うので、Batファイルなどで繰り返しZIP形式のファイルを作成するという操作の自動化は出来ません。
このような同じ操作でのZIP形式のファイルを繰り返し作成することを実現する必要があったので、どうすればよいのか調べてみました。
用語について整理
Batファイルをダブルクリックすることで動き、マウスの操作を伴わないツールは、いろいろと呼び方があるようです。
たとえばこちらのWikipediaでもコマンドラインインタフェース (command line interface, CLI) とかキャラクタユーザインタフェース (character user interface, CUI)といった呼び方があると紹介されてます。
そこで本記事では、CLIと呼ぶこととします。
Web検索をしました
まず同じことを考えている方がいないかを検索してみました。
少し巡回してみると、次のことが判明しました。
- フリーソフトで、CLIでのZIPファイルを作成するツールはいろいろありそう
- 簡単なものであれば、フリーソフトがなくてもWindowsのVBSスクリプト言語を使ってすぐ作れそう
すぐにツールか出来るということなので、せっかくだからとVBSスクリプト言語でプログラムしてみました。
ツール作成しました
やりたいことはいたってシンプルで、次の2つを実現します。
- ZIPファイルに収録するファイルが格納されているディレクトリ名と、収録先ZIPファイル名、の2つを設定
- ダブルクリックすることで、指示通りにZIP形式の圧縮ファイルを作成
今回は対象のファイルを特定の値に固定しても問題が無かったのでとてもシンプルに出来ました。
WEB検索すると同様のことをされている例がたくさんあったので、実装例は深く悩む必要はありませんでした。
そして、作ってみたVBSスクリプトがこちらです。
1,2行目での設定に基づいて、ZIPファイルへ対象ファイルを収録します。
今回は他の方がされているような高機能なことを一切排除して、極力シンプルになるようにしたつもりです。
1 2 3 4 5 6 7 8 |
InputFolder = "C:\some\where\srcDir" 'ZIPに収録するファイルのあるディレクトリ名 ZipFile = "C:\some\where\dst.zip" 'ZIPファイル名 CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) Set objShell = CreateObject("Shell.Application") Set source = objShell.NameSpace(InputFolder).Items objShell.NameSpace(ZipFile).CopyHere(source) wScript.Sleep 2000 |
拡張子が「vbs」(拡張子の種類:VBScript Scriptファイル)となるように保存。
あとは、このファイルをダブルクリックすれば動作します。
一見何も表示されないので不安になりますが、2行目のZipFileに指定したZIPファイルが作成されていたら成功です。
ZIPファイルを開いて中に期待するファイルが収録されていることを確認してみてください。
レスポンシブ広告
関連記事
-
バッチファイルで行末が数字の行をファイル出力する方法
Windowsのバッチファイル(拡張子bat)は書式に癖があるためか、簡単にでき …