WindowsでMHTMLファイルを展開して、個々のファイルを取り出す方法 (MHTML Expand Elements)

MHTMLファイルとは

MHTMLファイル(またはMHTファイル)とは、MIME HTML の略で、Webページを構成するHTMLファイルや画像、スタイルシートなどの関連ファイルを、1つのファイルにまとめて保存するための形式です。
これにより、オフライン環境でもWebページの内容をそのまま表示したり、共有したりすることが容易になります。

用途としては、以下あたりに使われます。

  • Webページの保存・アーカイブ(魚拓)
  • Webページのオフラインでの閲覧
  • Webページの共有
  • 電子メールの添付ファイルに利用
  • Windows Vistaから搭載されている「ステップ記録ツール」の実行結果の保存

Chomeでの、mhtmlの保存

保存したいWebページを表示して、右クリック->名前を付けて保存を選択します。
(Ctrl+Sでも、名前を付けて保存を呼び出せます。)

すると、「名前を付けて保存」のダイアログが表示されるので、
mhtml形式で保存するには「ウェブページ、1つのファイル(*.mhtml)」を選択すればOKです。

なお、選択肢は以下のような形で保存する形式になります。

  • ウェブページ、1つのファイル(*.html,*.htm)
    画像やスタイルシートなどのファイルを含まない、htmlファイルを保存します。
  • ウェブページ、1つのファイル(*.mhtml)
    Webページを構成するHTMLファイルや画像、スタイルシートなどの関連ファイルを、1つのファイルにまとめて保存します
  • ウェブページ、完全(*.html,*.htm)
    htmlファイルを保存するとともに、<htmlのファイル名_files>というフォルダを作成して、そこに画像、スタイルシートなどの関連ファイルを保存します。

「ウェブページ、完全(*.html,*.htm)」の利点と欠点

「ウェブページ、完全(*.html,*.htm)」も関連ファイルを含めて保存してくれます。
ではウェブページ、完全(*.html,*.htm)でよいではないか意見もありますが、
保存や、単純に画僧ファイル等を取り出すには便利なのですが、Windowsのエクスプローラ的にはhtmlと対応フォルダが1セットの認識となり、片方のファイルをコピーや移動、削除すると、フォルダも併せてコピー、移動、削除されてしまったりするので、扱いが少し難しいです。
これは、フォルダ側を操作しても同じです。
しかもこの1セットは、Zipファイルに圧縮などをした後に別の場所に展開しても引き継がれます。

なので、このページの画像ファイルだけ、抽出して保存したいといった場合は、保存用のフォルダを別に作成して、そこに画像ファイルだけをコピーして取り出すみたいな運用が主になります。

一応htmlファイルだけのファイル名を変更すると、以下のような警告が出て、
htmlと対応フォルダが1セットで扱われることを解除することも可能ですが、
元データはそのままにしたい場合には注意が必要になります。

また、画像ファイルのファイル名は、htmlで保存された

ウェブページ、1つのファイル(*.mhtml)の利点と欠点

「ウェブページ、1つのファイル(*.mhtml)」は
Webページを構成するHTMLファイルや画像、スタイルシートなどの関連ファイルを、1つのファイルにまとめて保存しますので、完全に1ファイルでの取り扱いになります。

ですので、Webページを完全な形で保存(魚拓)したり、
このファイルをローカル環境内で共有したりするには最適な形式になります。
メール送付も簡単です。

Mhtmlのファイルの中身は、MIME形式で変換・保存されています。
イメージ的には、メールの添付ファイルと同じ形式です。

このため、mhtmlファイルのhtmlの関連のファイルを取り出そうとすると、直接はできません。
mhtmlファイルを1つづつ、ブラウザを使って画像ファイルを一個づつ保存するか、
「ウェブページ、完全(*.html,*.htm)」で保存しなおしてファイルを取り出すことが必要になります。

また、Windows Vistaから標準搭載されている「ステップ記憶ツール」という、
操作内容を記録して、その様子をまとめたレポートを作成する機能
(Windowsの画面操作推移を操作内容とスクリーンショットを自動的に保存してくれるツール)
の保存形式もmhtmlをzip変換となります。仕事で使われてい方もいるかもしれません。

(参考)
Windows ステップ記録ツール(psr)のススメhttps://qiita.com/gzock/items/1c934d6577eec3b7f7ff

なので、mhtmlファイルは、保存や共有には便利ですが、
加工は難しいというのが特徴になります。

mhtmファイルの展開ツールを作る

ブラウザを経由すると、mhtmlごとに操作が必要なため、試しにWindows2000から標準利用できる標準スクリプト言語であるVBScript(Windows Script Host)を利用して、展開ツールを作ってみます。

VBScriptは非常に高機能で、Win32APIや、COMコンポーネントも操作できるため、システムの自動化やWebサイトの構築に使われていました。
が、現在では「PowerShell」や「JavaScript」といった、より強力で汎用性の高いスクリプト言語にとって代わられているのが実情ではあり、
2023年には非推奨、2027年にはフォルト無効(追加インストール可能)、その後完全な廃止が予定されているとのことです。
しかし、Windowsのライセンス操作や確認等の多くの内部コマンド(slmgr.vbs)もVBScriptで書かれており、完全な廃止には、かなりの困難が見込まれます。

今回作成したスクリプトは以下のようなものです。
(ご利用は自己責任でお願いします。)
(なお、エンコードは「ANSI」にして保存してください。)

(_99_ExpandMHTML.vbs


使い方は、上記スクリプトを「(_99_ExpandMHTML.vbs」という名前で保存して、
mhtmlファイルを選択して、(_99_ExpandMHTML.vbsにドラックします。
複数mhtmlファイルを選択して、まとめてドラックこともできます。

mhtmlファイルごとにフォルダができ、そこに連番のtxtファイルが展開されます。

ここで、
index.mtmlファイルが、連番ファイルとmhtmlファイル内のファイル名の対応表になります。

index.html

_rename.batが、上記対応表にリネームするバッチファイルです。
通常はこのファイルを実行してリネーム処理を行えばOKです。
_rename.bat実行後は「_rename.bat」ファイルは「 rename.bat」に自動でリネームされます。
(一部ファイル名で使えない文字がある場合は、2バイト文字に変更しています。またファイル名が長い場合も、強制的に短くしています。)

なんで、リネーム処理を分けているのかというと、保存されているファイル名が、
htmlで参照されている順番にソールされているとは限らないからです。

連番の状態では、参照順になっているようで、場合によっては、連番状態ファイルの拡張子をren *.txt *.jpegのようにリネーム化したほうが良い場合もあるので意図的に分けています。
(あと、セキュリティ的に、バッチファイルを自動実行させるのも怖かったので)

VBScriptですので、
状況によっては、_rename.batの作成るルールを変えることで、リネームするファイルを選別したり、リネームルールを変更もできます。
VBScriptから_rename.batを自動呼出しもできますので、ご自由にカスタマイズしてみてください。

VBScript利用時による注意点(ファイル名内Unicode文字)

VBScriptが古いツールであるため、Unicodeを含んだファイル名の操作に失敗することがあります。
その場合、フォルダ名を以下のように変えて、フォルダ作成時して、変換はスキップします。

  • Unicode文字は、「ユニコード文字1文字」ー>「_[?]_」
  • フォルダの最後に「_●●●●●Use_Unicode●●●●●」を追加

ユニコード文字は一部記号や外国で使われている文字に多く使われています。
「〜」「•」

ただし、すべての使用できない文字をうまく検知できないため、
フォルダは普通にできていても、VBScriptがエラーになって、処理が途中で終了してしまう場合があります。

複数のmhtmlファイルを処理する場合は、用途外のツールの利用ですが、以下のツールを利用すると、使用できるファイル名かどうかをチェックをすることが可能なようです。

WinExChange
https://www.vector.co.jp/soft/win95/util/se139464.html?srsltid=AfmBOoopZav_RnSgZrj4Wbilc_Q4qUFGV820PTHqrmsjVLymYTHUP0FF

本来は「1300種類以上の拡張子判別に対応した拡張子判別変換ツール」なんですが、
複数ファイルをドラックしたときに「次へ」で拡張子を変換せずに、確認だけすることができます。「Ant+N」でどんどん次に進めるので、エラーが出ないかチェックだけならすぐに終わります。

VBSで利用できないようなファイルがあった場合、「読み込みに失敗しました」
のように表示されます。
表示されているファイルの前後のファイルが処理できないものです。
このチェックをすれば、ほぼ、「(_99_ExpandMHTML.vbs」による展開処理は成功します。

以下の例ですと、
「_Nintendo Switch 2 開封の儀 • 奈酢美の部屋 別館.mhtml」の「 • 」が引っかかっているので、これを「 ・ 」に変更すると、ファイル名チェックが通るようになります。

mhtmlファイルの出元にもよりますが、「 」(スペース2つ連続)とかもひっかかることがあるので、この辺は試行錯誤になります。


(参考)

複数のフォルダを、一括でフォルダ事にZip圧縮処理する方法

以下のバッチファイルで、同じフォルダにあるフォルダを、フォルダ毎のZipファイルに圧縮・変換できます。

以下は、64bit版の7-zipを導入されていることが前提です。

(09_圧縮.bat

カテゴリー: 未分類 | コメントする

Nintendo Switch 2 開封の儀

開封の儀

任天堂から届いたNintendo Switch 2の開封の儀です(長文注意)

今回の購入物

Nintendo Swich 2 の箱です。意外と小さいです。

箱を開けると、Switch2本体と、ジョイコンが出てきました。

梱包物1

本体とジョイコンの入った箱を外すと、
中に「ドック」、「ACアダプタ」、「USBケーブル」、「ジョイコングリップ」が入っていました。

梱包物2

「ドック」、「ACアダプタ」、「USBケーブル」、「ジョイコングリップ」を袋から出しました。

「ドック」、「ACアダプタ」、「USBケーブル」、「ジョイコングリップ」

「Switch2本体」、「ジョイコン」x2も袋から出しました。

「Switch2本体」、「ジョイコン」

本体の下の箱から、「HDMIケーブル」「ジョイコンストラップ」x2 が出てきました。

「HDMIケーブル」「ジョイコンストラップ」

これが梱包物のすべてです。

なお、保証書は入っていません。
どうやら、納品書や、購入時のレシートが証書として必要なので、必ず保管しておきましょう。

初期セットアップ

電源を入れると、ロゴの後に利用規約の同意画面になります。
念のため、充電しながらセットアップします。

利用規約 同意画面

インターネット接続を実施します。(接続するWifiを選択して、パスコードを入力します)

インターネット接続画面

Wifi(アクセスポイント)に接続中

Wifi 接続中

本体の更新データをダウンロードします。
俗にいう1DAYパッチです。

本体の更新データをダウンロード

プレイスタイルの切り替え

「プレイスタイルの切り替え」の説明のようです。

プレイスタイルの切り替え

スタンドの立て方です。充電は上のUSBポートに切り替えると邪魔にならず
スタンドで立てることができます。

スタンドの立て方

ジョイコン(右)の外し方の説明です。
外すには、ジョイコン裏のボタンを押すと、結構あっさり外れます。
ただし押さないと、簡単には外れませんし、つけるときは、しっかり磁力でくっつくことが実感できます。
いい塩梅の感触です。

ジョイコン(右)の外し方

ジョイコン(左)の外し方の説明です。

ジョイコン(左)の外し方

ジョイコンを外した状態でも、もちろん操作できます。

取り外ししたジョイコンで操作

テレビにつないで使うこともできます。
今回はスキップします。

テレビのつなぎ方

ジョイコングリップや、ストラップでコントローラの持ち方が買えられます。

コントローラの持ち方の変更

ジョイコングリップにジョイコンを取り付けます。

ジョイコングリップにジョイコンを取り付け

外し方も説明されます。

ジョイコングリップからジョイコン(右)の取り外し

ストラップをつけてみます。

ジョイコンにストラップを装着

ストラップの取り外し方も説明されます。

ストラップの取り外し方の説明
ストラップの取り外し方の説明

いつでもスタイルを切り替えられます。

いつでもスタイルを切り替えられます

設定している間に、本体更新の準備ができたようです。

本体更新の準備ができました。

これまでNintendo Switchで遊んでいた方へ

今まで使っていたNintendoSwitchのデータを、Nintendo Switch 2 に丸ごと転送できます。
私も丸ごと転送します。が、その前に「丸ごと転送とは?」を押して説明を聞いてみます。

NintendoSwitchのデータを、Nintendo Switch 2 に丸ごと転送可能

まるごと転送の説明

まるごと転送の説明1
まるごと転送の説明2
まるごと転送の説明3

改めて、「まるごと転送に進む」で、まるごと転送を開始します、。

NintendoSwitchのデータを、Nintendo Switch 2 に丸ごと転送可能

ここで、「microSD Expressメモリカード」があれば、差し込むように促されます。
今回、Sandisk版のmicroSD Expressを購入していますので、差し込み方を確認します。

丸ごと転送を始めるために

microSD expressの挿入場所の説明

カードの接続する場所の説明

購入したmicroSD Expressカード

購入したmicroSD Expressカード

カードを取り出しました。
大きさは今までのMicroSDと同じだけど、裏面を見ると、端子数が増えているのがわかります。

microSDカードをSwitch2本体に差し込みます(奥まで指せば、ロックされます)

microSDカードをSwitch2に差し込み

カードを差し込むと、「本体を更新して、このSDカードを使えるようにします」と表示されます。

本体を更新して、このSDカードを使えるようにします

SDカードが認識され、使えるようになりました。

SDカード認識

ニンテンドーアカウントでログインします
QRコードが表示されるので、スマホからアクセスすれば、簡単にログインできます。
(スマホでログインすると、確認番号が出てくるので、それをSwitch2に入力します。)
もちろんほかの方法でもログインできます。

ニンテンドーアカウントにログイン

ログインできました。

ログイン完了

まるごと転送を開始します。

まるごと転送を開始

移行元のNintendo Switchを近づけます。

既存のNintendo Switchを近づけます

移行元のNintendo Switchで、設定ー>本体ー>「Nintendo Switch2に丸ごと転送」をクリックします。

移行元のNintendo Switchで、設定ー>本体ー>「Nintendo Switch2に丸ごと転送」をクリック

移行元のNintendo Switch側で、設定をします。

なお、移行前のスイッチに「ニンテンドーアカウントを連携していないユーザ」がいる場合は、移行先のSwitch2に移動され、移行前のSwitchのほうは削除されます。
あと、一部のセーブデータも移動されます。

準備ができたら、Switch2で「データの受け取りをはじめる」をクリックすると、
まるごと転送が開始されます。

データの受け取りをはじめる
転送中

転送完了しました。
うちの環境では、10分ぐらいでした。

転送完了

初期設定が完了しました

準備完了

Switch 2の起動

Switch2が起動しました。

Switch2を起動

Switch2 メニュー画面が表示されました。

何のため、以下の設定だけしておきました。

  • バッテリー残量の%表示
  • バッテリーの充電を約90%で停止
バッテリ関連の設定

これで、Switch2の初期設定は完了です。

ダウンロードソフトについては、この後裏でダウンロードが走っています。

カテゴリー: 未分類 | コメントする

任天堂からなにやら届きました (Nintendo Switch2)

任天堂からなにやら届きました

購入物

任天堂ストアの第3次抽選に当たったので、注文はしていました。
21日までに到着となっていたのですが、いきなり本日届きました。

ちゃんと段ボールには「SD自配シール」が貼られており、置き配厳禁となっていました。
(玄関に置くといった対応はできず、セールスドライバーが手渡ししなければならないというものです。ただ営業所にもよるらしいですが)。

SD自配ステッカー

送料無料なのに、わざわざコストかけてくれてるし、
段ボールもシンプルな無地のもので目立たないもので、盗難トラブルを見据えて、かなり気を使ってくれています。

今回の購入物

購入したのは

  • Nintendo Switch 2 日本語・国内専用 マリオカートワールド セット
  • Sanndisk microSD Express Card 256GB for Nintendo Switch2
  • Nintendo Switch 2 キャリングケース(画面保護シート付)
購入物

とりあえず、初期設定だけやって、現在裏でソフトのダウンロードを実施中。

既存のSwitchのデータ転送は10分ぐらいで終わるのはかなりお手軽でした。

ただ、そのあとダウンロードソフトのダウンロードがあるので、
マリオカートワールドも含めて、現在ダウンロード中。

続きは明日かな

カテゴリー: 未分類 | コメントする