Windowsで複数ファイルの文字コードをまとめて変換する方法

Windowsで複数ファイルの文字コードをまとめて変換する方法

Posted at October 7,2016 12:03 AM
Tag:[PowerShell, Windows]

Windowsで複数ファイルの文字コードをまとめて変換する方法を紹介します。

1.問題点

Linux上にある、文字コードがEUC-JPのファイルをWindowsにダウンロードしたのですが、EUC-JPのままでは扱いにくいため、これをまとめてShift_JISに変換したいと考えています。

Windowsでファイルの文字コードを変換するには、なんらかのスクリプトを作る必要がありますが、できれば簡単に済ませたいところです。

ということで、複数ファイルの文字コードをまとめて変換する方法を紹介します。

ここでは下記の記事を参考にさせていただきました。

2.複数ファイルの文字コードをまとめて変換する

複数ファイルの文字コードをまとめて変換するには、まず次のPowerShellスクリプトを"test.ps1"などのファイル名で"C:\tmp"フォルダに保存します。

param(
  [String]$in = "C:\tmp\before",
  [String]$out = "C:\tmp\after",
  [String]$from = "EUC-JP",
  [String]$to = "Shift-JIS"
)
$enc_f = [Text.Encoding]::GetEncoding($from)
$enc_t = [Text.Encoding]::GetEncoding($to)
  Get-ChildItem $in -recurse |
    ForEach-Object {
      if($_.GetType().Name -eq "FileInfo"){
        $reader = New-Object IO.StreamReader($_.FullName, $enc_f)
        $path = $_.FullName.ToLower().Replace($in.ToLower(), $out)
        $folder = Split-Path $path -parent
        if(!(Test-Path $folder)){
          [Void][IO.Directory]::CreateDirectory($folder)
        }
        $writer = New-Object IO.StreamWriter($path, $false, $enc_t)
        while(!$reader.EndOfStream){$writer.WriteLine($reader.ReadLine())}
        $reader.Close()
        $writer.Close()
      }
    }

次に、"C:\tmp\before"配下に、文字コードを変換したいファイルをフォルダごと配置します。

そして「スタート」→「アクセサリ」→「Windows PowerShell」→「Windows PowerShell」を右クリックして「管理者として実行」をクリック。

PowerShell画面で、下記の赤色で示したコマンドを実行します。

PS C:¥Users¥hoge> cd C:¥tmp
PS C:¥tmp> Set-ExecutionPolicy RemoteSigned
 
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
PS C:¥tmp> .¥test.ps1

これでafterフォルダに、文字コード変換されたファイルが出力されます。

入力および出力ファイルの文字コードを変更したい場合は、下記の行を書き換えてください。

  [String]$from = "EUC-JP",
  [String]$to = "Shift-JIS"
関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)