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

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

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

▽最新の回答へ

1 ● きゃづみぃ
●250ポイント
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 

2 ● a-kuma3
●250ポイント

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
関連質問

●質問をもっと探す●



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