Sub ConvCharset(fromFile, toFile) Set objStream = WScript.CreateObject("adodb.stream") objStream.Type = 2 objStream.Charset = "Shift_JIS" objStream.Open objStream.LoadFromFile(fromFile) ' Shift-JIS のファイルを読み込み txt = objStream.ReadText() objStream.Close() objStream.Open() objStream.Position = 0 objStream.Charset = "UTF-8" ' UTF-8 でファイルへ書き込み objStream.WriteText txt objStream.SaveToFile toFile, 2 objStream.Close Set objStream = Nothing End Sub Sub ConvCharsetAll(targetFolder) Dim fs, folder Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set folder = fs.getFolder(targetFolder) For Each f In folder.Files if right(f.Path,4)=".htm" or right(f.Path,5)=".html" then call ConvCharset (f.Path, f.Path) end if Next For Each f in folder.SubFolders call ConvCharsetAll(f) Next End Sub fromFolder = "hoge" ' 変換元のファイルがあるフォルダ toFolder = "hoge_u" ' 変換後のファイルを置くフォルダ Set fs = WScript.CreateObject("Scripting.FileSystemObject") fs.CopyFolder fromFolder, toFolder ConvCharsetAll toFolder
FileSystemObject の GetExtensionName メソッドを使う方が、打ち間違いが少ないような気がします(やってることは、No.1 の回答と同じです)。
Sub ConvCharset(fromFile, toFile) Set objStream = WScript.CreateObject("adodb.stream") objStream.Type = 2 objStream.Charset = "Shift_JIS" objStream.Open objStream.LoadFromFile(fromFile) ' Shift-JIS のファイルを読み込み txt = objStream.ReadText() objStream.Close() objStream.Open() objStream.Position = 0 objStream.Charset = "UTF-8" ' UTF-8 でファイルへ書き込み objStream.WriteText txt objStream.SaveToFile toFile, 2 objStream.Close Set objStream = Nothing End Sub Sub ConvCharsetAll(targetFolder) Dim fs, folder Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set folder = fs.getFolder(targetFolder) For Each f In folder.Files ' 拡張子が htm か html だけを変換対象とする ext = fs.GetExtensionName(f.Path) If ext = "htm" Or ext = "html" Then call ConvCharset (f.Path, f.Path) End If Next For Each f in folder.SubFolders call ConvCharsetAll(f) Next End Sub fromFolder = "hoge" ' 変換元のファイルがあるフォルダ toFolder = "hoge_u" ' 変換後のファイルを置くフォルダ Set fs = WScript.CreateObject("Scripting.FileSystemObject") fs.CopyFolder fromFolder, toFolder ConvCharsetAll toFolder