VBSの質問です

http://q.hatena.ne.jp/1373468397 こちらの質問の続きです
回答者の方が書いてくださった2つ目のプログラムに関してです。
プログラムを実行しますと 画像ファイルまでがutf8化されコピーされてしまいます。
.html と .htm のファイルは文字コードが変換され 他の拡張子のファイルは変換されずにコピーされるプログラムを教えて下さい

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/07/12 04:38:57
  • 終了:2013/07/19 04:40:03

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13481ベストアンサー獲得回数11982013/07/12 05:49:16

ポイント250pt
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 
id:a-kuma3 No.2

a-kuma3回答回数4363ベストアンサー獲得回数18002013/07/12 16:04:25

ポイント250pt

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません