Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. param(
  2. [String]$in = "C:\Convert\01_Input",
  3. [String]$out = "C:\Convert\02_Output",
  4. [String]$from = "EUC-JP",
  5. [String]$to = "Shift-JIS"
  6. )
  7.  
  8. # 引数$from、$toから、文字コードを表すEncodingオブジェクトを生成
  9. $enc_f = [Text.Encoding]::GetEncoding($from)
  10. $enc_t = [Text.Encoding]::GetEncoding($to)
  11.  
  12. # 与えられたパスから合致するファイルリストを再帰的に取得
  13. Get-ChildItem $in -recurse |
  14.  
  15. # 取得したファイルを順番に処理
  16. ForEach-Object {
  17. # 取得したオブジェクトがファイルの場合のみ処理(フォルダの場合はスキップ)
  18. if($_.GetType().Name -eq "FileInfo"){
  19. # 変換元ファイルをStreamReaderオブジェクトで読み込み
  20. $reader = New-Object IO.StreamReader($_.FullName, $enc_f)
  21. # 保存先のパス、保存先の親フォルダのパスを生成
  22. $o_path = $_.FullName.ToLower().Replace($in.ToLower(), $out)
  23. $o_folder = Split-Path $o_path -parent
  24. # 保存先のフォルダが存在しない場合にフォルダを自動生成
  25. if(!(Test-Path $o_folder)){
  26. [Void][IO.Directory]::CreateDirectory($o_folder)
  27. }
  28. # 保存先ファイルをStreamWriterオブジェクトでオープン
  29. $writer = New-Object IO.StreamWriter($o_path, $false, $enc_t)
  30. # 変換元ファイルを順に読み込み、保存先ファイルに書き込み
  31. while(!$reader.EndOfStream){$writer.WriteLine($reader.ReadLine())
  32. }
  33. # ファイルをすべてクローズ
  34. $reader.Close()
  35. $writer.Close()
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement