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"
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting