要注意!Windows7はCompress-Archiveで文字化けするかも?

こんにちは。チェシャ男です。(-皿-)

当ブログでも紹介している Compress-Archive コマンドレット

[blogcard url=”https://cheshire-wara.com/powershell/ps-cmdlets/item-file/compress-archive/”]

Windows 7 端末の PowerShell をバージョン 5.0にアップデートしたので「使ってみよう!」と何気なく実行したとき事件が起きました!!

なんと圧縮したZIPファイルが文字化けしてしまったのです。

ざっくり状況説明

事件発生時と同じような環境を用意します。

現在のフォルダ・ファイルの状況が、

PS F:\work> Get-ChildItem -Recurse


    Directory: F:\work

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2017/01/17     10:35                新しいフォルダー


    Directory: F:\work\新しいフォルダー

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2017/01/17     10:35              0 新しいテキスト ドキュメント.txt

であったとします。

つまり、

F:\Work
└─新しいフォルダー
└─新しいテキスト ドキュメント.txt

こういう状況ですね。

ディレクトリの中には日本語で名前を付けられたフォルダとファイルが存在しています。

  • フォルダ:新しいフォルダー
  • ファイル:新しいテキスト ドキュメント.txt

これらのファイルを ZIP 圧縮してみます。

いざ、Compress-Archive を実行!

早速、Compress-Archive コマンドレットでを使って ZIP 圧縮ファイルを作成してみると…

PS F:\work> #圧縮処理
PS F:\work> Compress-Archive -Path .\新しいフォルダー -DestinationPath .\Hoge.zip
PS F:\work> #ファイルを確認
PS F:\work> Get-ChildItem


    Directory: F:\work


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2017/01/17     10:35                新しいフォルダー
-a----       2017/01/17     15:34            236 Hoge.zip

と、このように問題ないように見えます。

しかしエクスプローラで圧縮ファイルの中身を見てみると、

ファイル文字化けの様子-チェシャわら

なんと壮大に文字化けしているではありませんか。

これはどうしたものか。。。

とりあえず解凍してみる

ひとまず、Expand-Archive コマンドレットで解凍してみました。

PS F:\work> Get-ChildItem


    Directory: F:\work


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2017/01/17     10:35                新しいフォルダー
-a----       2017/01/17     15:34            236 Hoge.zip

PS F:\work> #解凍処理
PS F:\work> Expand-Archive -Path .\Hoge.zip
PS F:\work>
PS F:\work> Get-ChildItem -Path .\Hoge -Recurse


    Directory: F:\work\Hoge

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2017/01/17     16:07                新しいフォルダー


    Directory: F:\work\Hoge\新しいフォルダー

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2017/01/17     10:35              0 新しいテキスト ドキュメント.txt

上のように解凍前の

  • フォルダ:新しいフォルダー
  • ファイル:新しいテキスト ドキュメント.txt

は復元されているらしい。

一応ファイルのハッシュ値を確認してみると

PS F:\work> #圧縮前のファイルハッシュ
PS F:\work> Get-FileHash '.\新しいフォルダー\新しいテキスト ドキュメント.txt'

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855       F:\work\新しいフォルダー\新しいテキスト...


PS F:\work>
PS F:\work> #解凍後のファイルハッシュ
PS F:\work> Get-FileHash '.\Hoge\新しいフォルダー\新しいテキスト ドキュメント.txt'

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855       F:\work\Hoge\新しいフォルダー\新しいテ...

解凍してできたファイルと圧縮元のファイルは一致している。

ということは単なる表示上のバグなのか…

ちなみに同じことを Windows 8.1 でやってみると問題なく圧縮・解凍できた。Windows 7 のバグのようだが果たして解決はできるのでしょうか。。。

※文字化け問題解決しました!解決方法はこちらをご覧ください。

[blogcard url=”https://cheshire-wara.com/powershell/ps-column/compress-archive-resolved/”]

コメントを残す

メールアドレスが公開されることはありません。