2008年4月19日土曜日

【VBS】app.configを機械的に置換する。

最初は、こんなもん何でもないなぁと思ってたのですが

いざ、ファイルシステム使ってやってみると文字バケ発生。

どうやらファイルシステムではUTF-8に対応してないらしい。

既にいくつも、紹介されてますが、メモ。

Const adCharSet = "UTF-8"
Const adSaveCreateOverWrite = 2
Const adTypeText = 2
Const adCRLF = -1
Const adReadAll = -1

Dim intMsg
intMsg=MsgBox("実行しますか?",vbYesNo+vbQuestion,"置換")
If intMsg=vbNo Then
WScript.Quit
End If

Dim strReplace,strTarget
Do While strReplace = "" OR strTarget = ""
strReplace=InputBox("置換する文字を入力してください。")
strTarget=InputBox("置換後の文字を入力してください。")
Loop

Dim strAll
strAll = ReadFile("app.config")

'バックアップの作成
Call WriteFile("app.config.backup",strAll)
'置換
strAll = Replace(strAll, strReplace, strTarget)
'書込み
Call WriteFile("app.config",strAll)

WScript.Echo "終了しました。"

Function ReadFile(fileName)
Dim str
Set StreamIn = WScript.CreateObject("ADODB.Stream")

StreamIn.Open
StreamIn.Type = adTypeText
StreamIn.Charset = adCharSet
StreamIn.LoadFromFile(fileName)

StreamIn.LineSeparator = adCRLF
StreamIn.Position = 0
str = StreamIn.ReadText(adReadAll)
StreamIn.Close
ReadFile = str
End Function

Sub WriteFile(fileName, str)
Set StreamOut = WScript.CreateObject("ADODB.Stream")

StreamOut.Open
StreamOut.Type = adTypeText
StreamOut.Charset = adCharSet
StreamOut.LineSeparator = adCRLF
StreamOut.Position = 0
StreamOut.WriteText(str)
StreamOut.SaveToFile (fileName),adSaveCreateOverWrite
StreamOut.Close
End Sub

0 件のコメント: