| [PowerShell] | |||||||||
PowerShellで複数のファイルの文字コードを一括変換する
|
|||||||||
|
|||||||||
| 解説 |
昨今では、複数の文字コードに対応したテキスト・エディタも多くなってきたことから、テキスト・ファイルの文字コードを変換することは、それ自体、それほど難しいことではない。しかし対象となるファイルが何十にも及んだ場合、これを1つ1つ手作業で変換しなければならないのは、やはり手間だし、人為的な間違いや漏れが発生する可能性がある。
本TIPSでは、特定のフォルダ配下に収められた複数のテキスト・ファイルの文字コードをPowerShellを使って一括で変換する方法について紹介する。フォルダ配下のサブフォルダまで再帰的に処理されるため、対象ファイルの指定もシンプルだ。
| 操作方法 |
| *注意 |
PowerShellでスクリプト・ファイルを実行する場合には、あらかじめいくつかの設定を行っておく必要がある。詳細については、別稿「Windows PowerShellコマンド&スクリプティング入門(後編)」を参照いただきたい。 |
手順1――テキスト・エディタでPowerShellのコードを入力する
まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してほしい。なお「#」で始まる行は、コードの意味を解説するためのコメント部分なので、省略してもよい。コメントにはスクリプトの簡単な説明を入れておいた。
|
|
| ※ サンプル・ファイルFileConvert.ps1をダウンロードするには、ここをクリックしてください。 |
PowerShellスクリプトの実行ファイルは拡張子を「.ps1」とする必要がある。ファイル名自体は何でも構わないが、ここでは「FileConvert.ps1」という名前で保存しておこう。
コード全体の流れについてはリスト内のコメントをご覧いただくとして、ここで注目してほしいのは、次の点だ。
- ファイルの読み書きを行うのはStreamReader/StreamWriterクラスの役割
StreamReader/StreamWriterクラスは.NET Frameworkで提供されるクラスで、それぞれファイルの読み書きに関する機能を提供するものだ。ここでは、これらのクラスが読み込み/書き込み時に文字エンコーディングを指定できることを利用して、StreamReaderクラスから指定した文字コードでファイルを読み込み、StreamWriterクラスでさらに新たに文字コードを指定して新規のファイルへの書き込みを行っている。これによって、ファイルの文字コードを変換することができる。
StreamReader/StreamWriterクラスについては、別記事の「テキスト・ファイルの内容を読み込むには?」「ファイルにテキストを書き込むには?」(Insider.NETフォーラム)が詳しいので、参照していただきたい。
手順2――PowerShellのスクリプト・コードを実行する
FileConvert.ps1を実行するには、PowerShellのプロンプトを開いたうえで、以下のようにコマンドを実行すればよい(*)。また利用に当たっては、「c:\tmp\Convert」フォルダ配下に変換対象のテキスト・ファイルが、変換後のファイルの保存先として「c:\tmp\Converted」フォルダが存在することを確認しておいてほしい。
PS > ./FileConvert.ps1 |
エラーが表示されずにスクリプトが終了し、かつ、所定のフォルダ(ここでは「c:\tmp\Converted」)に変換後のファイルが保存されていれば成功だ。
この例では引数なしで実行しているが(すべてデフォルトのままで実行しているが)、変換するファイルの場所や文字コードを変更したければ、次のように、
PS > ./FileConvert.ps1 c:\tmp\test\Convert c:\tmp\test\Converted Shift_JIS UTF-8 |
「変換対象のフォルダ」「変換後のファイルの保存先」「変換前の文字コード」「変換後の文字コード」の順に引数を指定する。この例では、「c:\tmp\test\Convert」にあるテキスト・ファイルがShift_JISからUTF-8コードに変換され、その結果が「c:\tmp\test\Converted」に保存される。指定可能な文字コード名としては次のようなものがある。
| コード名 | 文字コード |
| shift_jis | 日本語(シフトJIS) |
| iso-2022-jp | 日本語(JIS) |
| euc-jp | 日本語(EUC) |
| utf-16 | Unicode(リトル・エンディアン) |
| unicodeFFFE | Unicode(ビッグ・エンディアン) |
| utf-32 | Unicode(UTF-32リトル・エンディアン) |
| utf-32BE | Unicode(UTF-32ビッグ・エンディアン) |
| utf-7 | Unicode(UTF-7) |
| utf-8 | Unicode(UTF-8) |
| us-ascii | US-ASCII |
| 指定可能な文字コード名の例 | |
| ここでは日本語環境でよく使われると考えられる文字コード名を挙げておいた(大文字/小文字の違いは無視される)。これ以外にも利用可能な文字コード名は数多くあるが、詳細は「Encodingクラス(マイクロソフトMSDNサイト)」の表を参考にしていただきたい。 | |
この記事と関連性の高い別の記事
- PowerShellで複数のファイルの文字列を一括置換する(TIPS)
- WindowsでInternet Explorerを使って文字コードを変換する(TIPS)
- nkfツールで文字コードを変換する(TIPS)
- ファイルの文字コードを変換する(TIPS)
- スクリプトレット・コンポーネントでリソース情報を定義する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
| 「Windows TIPS」 |
@IT Special
- PR -TechTargetジャパン
- 第449話 ウインドウズナナ (2015/2/17)
ナナってあんたねぇ。飲み屋のおねえちゃんじゃないんだからさぁ。まったくこれだからオヤジは困んだよなぁ - MVPとは何か。なぜスタートアップの評価対象となるのか (2015/2/16)
4月15日まで応募受付中のコンテストについて企画した背景や思いなどを聞いた - 新しいシステム設定画面とアクションセンター (2015/2/16)
Windows 8/8.1で導入されたチャームメニューはWindows 10では廃止され、UIが変更される他、アクションセンターも一新される - これだけは覚えておきたいコマンドプロンプトの使い方 (2015/2/13)
GUIによる操作が当たり前のこの時代でも、Windows OSの管理にコマンドプロンプトはまだまだ欠かせない。コマンドプロンプトの基本的な使い方を解説
|
|
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
Editor's Eye
- PR -転職/派遣情報を探す
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
「購買データ」と「意識データ」の組み合わせが描き出すリアルな生活者像
データに基づいてメディアをプランニングできる時代が始まった。生活者の「意識データ」...
PR TIMES、「THE BRIDGE」と提携 テクノロジー系スタートアップのプレスリリース紹介始める
PR TIMESが運営するプレスリリース配信サービス「PR TIMES」は2月16日、国内テクノロジー...
ファッションアプリが人気、利用目的は何? GMOメディアが調査結果を発表
GMOインターネットグループのGMOメディアは2月16日、10代〜60代の女性889人を対象にした...