テキストの置換をするVBScript

とりあえず動くVBScriptを作成しました。

テキストの置換だけならテキストエディタの置換機能でできますが、

毎回同じ置換をするときに用意したり、今回のスクリプト以外にも条件を追加して使ったりします。

サンプル用には”壁(かべ)”と”璧(へき)”が混ざったテキストを”壁(かべ)”にするスクリプトにしました。

入力ファイル

壁壁壁壁壁壁壁壁壁壁
壁壁璧壁壁壁壁壁壁壁
壁壁壁壁壁壁壁璧壁壁
壁壁璧壁壁壁壁壁璧壁
壁壁壁壁壁壁壁壁壁壁
壁壁壁壁壁壁壁壁壁壁
壁壁壁壁壁壁壁壁壁壁
壁壁壁壁壁璧壁壁壁壁
壁璧壁壁壁壁壁壁壁壁
壁壁壁壁壁壁壁壁璧壁

↓このように文字が混ざっています。

スクリプト本体

Option Explicit
On Error Resume Next

' ==============================
' 変数
' ==============================
Dim objWshShell		'WshShellオブジェクト
Dim objFileSys		'ファイルシステムオブジェクト
Dim objParam

Dim strFileName
Dim objFileInput
Dim strOutput
Dim strLine
' ==============================
' 定数
' ==============================
Const ForReading = 1, ForWriting = 2, ForAppending = 8
' ==============================
' 処理
' ==============================
set objWshShell = WScript.CreateObject("WScript.Shell")
'引数チェック
set objParam = WScript.Arguments

If objParam.Count <> 1 Then
	objWshShell.Echo "コマンドライン引数がありません。"
	objWshShell.Quit
End If

strFileName = objParam(0)
'ファイル名が入力されなかったら終了
If strFileName = "" Then
	objWshShell.Quit
End If

'ファイルシステムオブジェクト
Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")
'ファイル読み込み
Set objFileInput = objFileSys.OpenTextFile(strFileName, ForReading)

If objFileSys.FileExists(strFileName) then
	Do While objFileInput.AtEndOfStream <> True
		strLine = objFileInput.ReadLine
		' -----------
		' 加工処理
		' -----------
		If InStr(strLine,"璧") > 0 then
			strLine = Replace(strLine,"璧","壁")
		End If
		strOutput = strOutput & strLine & vbCrLf
	Loop
	objFileInput.Close

	Set objFileInput = objFileSys.OpenTextFile(strFileName, ForWriting)
	If Err.Number = 0 Then
		objFileInput.Write(strOutput)
		objFileInput.Close
	Else

	End If
Else
	objWshShell.Echo "ファイルがありません。"
	objFileInput.Close
End If

入力ファイルをドラッグアンドドロップで使用します。

入力したファイルを変更するので、置換前のファイルが必要な場合はコピーしておきます。

「’ 加工処理」の部分を必要に応じてカスタマイズすることが多いです。

VBScript関連書籍の選び方

ネット検索で十分だと思いますが、書籍で勉強する場合はサンプルが載っていたり、

逆引きができる本がおすすめです。

[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

新品価格
¥2,068から
(2022/1/22 21:53時点)

Leave a Reply

Your email address will not be published.

CAPTCHA