[ファイル管理] 自作VBSファイルで複数のファイル内の指定文字を一括置換する
2017年7月6日
複数のファイル内の指定文字を一括置換する
大量のファイルでもこのプログラムを作れば一気に文字を置換できる
ファイルのある文字を別の文字にすべて置き換えたい場合もあると思います。
数個のファイルであれば、一つ一つファイルを開いてエディターの一括置換を使って行うのもよいでしょう。しかし、何十個、何百個のファイルとなるとどうでしょうか?とても手動では行いたくありませんよね。
そこで、自動化プログラムの出番です。ここでは、パソコンやプログラムに詳しくない方でも、とりあえず作って使える複数ファイルの文字一括置換方法を紹介します。
複数ファイルの文字一括置換ソフトはいくらでもネット上に落ちており、無料でインストールできるでしょう。しかし、ここでは何もインストールなどしなくともWindowsユーザーであれば、誰でも実行できるプログラムを作っていきます。
VBScriptというWinodwsにデフォルトで搭載されているプログラムを使って作成していきましょう。
こんな方に読んで欲しい
・大量のファイル内のある文字を別の文字に一括置換したい人
・VBScriptでのファイル内容の操作に興味がある人
・ソフトに頼らずパソコンの自動化を行いたい人
コピー&ペーストで作る複数ファイル文字置換プログラム
プログラムの作成前に確認です。あなたのファイルは拡張子が表示される設定になっていますか?「まだの方」や「拡張子って?の方」は「ファイルの拡張子を表示する設定」から設定をお願いします。1分もかかりません。
では、ファイル内文字の置換を行うパソコンの自動化を行っていきましょう。まずは作業フォルダを決めます。どこでも構いません。私は以下のフォルダで作業を行っていきます。
ここに、「ファイル内文字置換.vbs」というファイルを作りましょう。そしてこのファイルを開いて、以下のプログラムコードをコピー&ペーストします。(※ファイルを開く際は、「右クリック」から「編集」を選んでください)
Windowsパソコン作業の自動化・効率化
Option Explicit
'On Error Resume Next
'対象ファイルのドラッグ&ドロップによる取得
Dim Args, Arg
Set Args = WScript.Arguments
'ユーザー入力
Dim ReplacedWord
Dim ReplacingWord
ReplacedWord = InputBox("置き換えられる文字を入力してください", "置換情報の入力")
If IsEmpty(ReplacedWord) = True Then
WScript.Quit
End If
ReplacingWord = InputBox("置き換え文字を入力してください", "置換情報の入力")
If IsEmpty(ReplacingWord) = True Then
WScript.Quit
End If
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Dim objFileWrite ' ファイル書き込み用
Set objFso = WSCript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
For Each Arg In Args
Set objFileWrite = objFSO.OpenTextFile(Arg + "rpls", 2, True)
Set objFile = objFSO.OpenTextFile(Arg)
If Err.Number = 0 Then
Do While objFile.AtEndOfStream <> True
Dim Line
Line = objFile.ReadLine
objFileWrite.WriteLine(Replace(Line, ReplacedWord, ReplacingWord))
Loop
objFile.Close
objFileWrite.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Next
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFile = Nothing
Set objFSO = Nothing
'On Error Resume Next
'対象ファイルのドラッグ&ドロップによる取得
Dim Args, Arg
Set Args = WScript.Arguments
'ユーザー入力
Dim ReplacedWord
Dim ReplacingWord
ReplacedWord = InputBox("置き換えられる文字を入力してください", "置換情報の入力")
If IsEmpty(ReplacedWord) = True Then
WScript.Quit
End If
ReplacingWord = InputBox("置き換え文字を入力してください", "置換情報の入力")
If IsEmpty(ReplacingWord) = True Then
WScript.Quit
End If
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Dim objFileWrite ' ファイル書き込み用
Set objFso = WSCript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
For Each Arg In Args
Set objFileWrite = objFSO.OpenTextFile(Arg + "rpls", 2, True)
Set objFile = objFSO.OpenTextFile(Arg)
If Err.Number = 0 Then
Do While objFile.AtEndOfStream <> True
Dim Line
Line = objFile.ReadLine
objFileWrite.WriteLine(Replace(Line, ReplacedWord, ReplacingWord))
Loop
objFile.Close
objFileWrite.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Next
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFile = Nothing
Set objFSO = Nothing