Windowsに内蔵されている機能だけを使って、スクリプトからどのようにzipやunzipができるのでしょうか?

Windowsでは、以下の方法でファイルを圧縮することができます。

右クリック → Send toCompressed (Zipped) folder.

そして、.zipファイルをダブルクリックして解凍し、ファイルを取り出します。

これらの機能を、サードパーティのソフトウェアをインストールすることなく、**スクリプト(.batファイル)から適用する方法はありますか?

ソリューション

2013年当時、それは不可能でした。マイクロソフトはこのための実行ファイルを提供していませんでした。

VBSを使った方法についてはこちらをご覧ください。 https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows

Windows 8以降では、.NET Framework 4.5がデフォルトでインストールされており、System.IO.Compression.ZipArchiveとPowerShellが利用できるので、これを実現するスクリプトを書くことができます。 https://stackoverflow.com/a/26843122/71312

解説 (8)

私はこの質問に答えようと思っていましたが、調べてみるとDiryBoy'さんの回答は正確なようです。

compact.exeプログラムはファイルを圧縮しますが、高度に圧縮されたファイル(またはファイル群)を作成するわけではないことがわかりました。 これは、Windowsでドライブレターやパーティションを右クリックしたときに表示されるオプションに似ています。ファイルを圧縮するだけでなく、クリーンアップ(一時ファイルの削除など)を行うオプションもあります。 圧縮されたファイルはまだアクセス可能ですが、空き容量の少ないドライブのスペースを確保するために圧縮されています。

たまたま私のコンピュータにあったcompress.exeも見つけました。 これは、ほとんどのWindowsマシンにはネイティブではなく、2003リソースキットの一部です。 一種のZIPファイルを作成しますが、実際にはWindowsのセットアップディスクのファイルに似ています(ファイルの拡張子や名前の最後の文字にアンダースコアが付いています)。 そして、extract.exeコマンドはこれらのファイルを抽出します。

しかし、GUIでネイティブにできるのであれば、コマンドラインのバッチや.vbsなどのスクリプトでできる可能性があるということです。 WindowsにはZIPファイルを作成するための 'send to'オプションがあるので、コマンドラインでそれを行う方法があるはずだと思い、いくつかのオプションを見つけました。

Windowsネイティブのコマンドを使ってファイルをZIPする方法を紹介した素晴らしいリンクがあります。

https://superuser.com/questions/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili

複数の入れ子になったファイルやフォルダを含むディレクトリでテストしたところ、完璧に動作しました。 コマンドラインのフォーマットに従うだけです。

コマンドラインでファイルを解凍する方法もありますが、これも見つけました。 一つの方法は、zipファイルの内容を示すエクスプローラウィンドウを開くことです。 これらの中には、Javaを使用しているものもあります。これは必ずしもWindowsのネイティブではありませんが、あまりにも一般的なので、ほとんどそう思われているようです。

https://superuser.com/questions/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default

https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line

解説 (1)

ZIPやネイティブ圧縮されたWindowsファイルを解凍するには、Expandコマンドを使用します。

expand MyFile.zip myFile
解説 (5)