zipファイルの中身を指定された場所にコピーさせるにはどうすればいいのか
大学の某演習科目であるソフトウェア(もちろんWindowsでしか動作しない)を自分でインストールして、それを使って宿題をやれというかなり難易度の高い課題が課せられてしまいました。
LinuxとMacばかり使っててWindowsが動くPCなんかまともなものが無いのでWindows無いと単位が無いとか本当に困るのですが、なんとか10年くらい前のボロPCにインストールして、終わらせました。
まあ僕はそれで終わりなのでいいのですが、他の人はろくにインストールできなかったようです。
Windows使ってるのになにか困ることでもあるのかと思ったのですが、実は問題は設定ファイルのコピーでした。
設定ファイルはzipファイルで圧縮されており、複数のファイルが圧縮されています。
これを指定された場所にコピーするだけで終わるのですが、初心者はこうやってしまいました。
本来設定ファイルがあるべきファイルパス: C:\config\file\path
初心者が設定ファイルをコピーしたパス: C:\config\file\path\zipfiilename
どういうことかというと、zipファイルの名前のフォルダの下にファイルをコピーしてしまっているのです。
zipファイルの中身は複数の設定ファイルが直にあり、フォルダの下にあるというわけではないので、こうするのは誤りです。
ではなぜわざわざzipファイルの名前でフォルダを作ってその下にファイルをコピーしているのかというと、Windowsのエクスプローラでzipファイルを右クリックすると「すべて展開」というメニューがあり、それを使ってzipファイルを展開できます。
おそらく、初心者は他のzipを展開するソフトウェアをインストールしていないと思われるので、それを使ったかと思われます。
「すべて展開」を使ってzipファイルを展開すると、zipファイルの名前でフォルダが作られ、その下にzipファイルに入っているファイルが展開されます。
エクスプローラ上でzipファイルを展開するとこういうファイル構成になります。
- zipfile.zip
- zipfile\
- (zipファイルの中身)
これを見るとzipfile.zipの中身が
- zipfile\
- (zipファイルの中身)
のようにフォルダを圧縮したかのように見えてしまい、このフォルダを指定された場所にコピーしてしまうようです。
ではどうすればいいのか……
エクスプローラの「すべて展開」に限らず、他のソフトでもこうなることはありますし、zipファイルで配布した時点で初心者でも100%指定された場所にzipファイルの中身をコピーしてくれることを保証することは無理なので諦めるしかないですね。