人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBSの質問です
http://q.hatena.ne.jp/1373424817 の質問の続きなのですが
htmlの文字コード変換を
hogeフォルダ以下の全サブフォルダ 孫フォルダに適応させたいのですが
その場合どのように書けばいいのでしょうか?
教えてください

●質問者: takanii
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント ベストアンサー

前の回答の処理をサブルーチンにして、フォルダを再帰的に処理するようにします。

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)

 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
 f_utf8 = f.ParentFolder.Path & "\" & _
 fs.GetBaseName(f.Path) & "_u" & "." & _
 fs.GetExtensionName(f.Path)
 call ConvCharset (f.Path, f_utf8)
 Next

 For Each f in folder.SubFolders
 call ConvCharsetAll(f)
 Next

End Sub


' hoge を変換対象にする
Call ConvCharsetAll ("hoge")

変換元のファイル名の末尾に、"_u" をつけたものを変換後のファイルとしています。
例えば、hoge\a.html は、hoge\a_u.html に変換されます。


同じところに、ふたつファイルができても、あまりうれしくないかと思い、別のフォルダに変換後のファイルをつくるのも書いてみました。

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
 call ConvCharset (f.Path, f.Path)
 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

フォルダを複製して、上書きで変換しているだけですけど。
最後の方に書いてある fromFolder が変換元のファイルがあるフォルダで、toFolder が変換後のファイルを置くフォルダです。


takaniiさんのコメント
ありがとうございました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ