「ファイル内の検索と置換」スクリプトは機能しますが、期待どおりではありません。2 つの問題があります。
oldtext
古いテキストの後にさらに文字列がある場合、 with regadlessが変更さnewtext
れます: この状況を回避したい!
以下を含むバッチファイルからそのスクリプトを呼び出しています。
cscript replace.vbs file.txt こんにちは世界
file.txt には以下が含まれていると仮定します。
house
abc.hellowide.use
abc.hello.use
hello
hellonurse
スクリプトでファイルを次のように変更します。
house
abc.hellowide.use
abc.world.use
wolrd
hellonurse
今のところ、スクリプトは次のような望ましくない変更をもたらします。
house
abc.worldwide.use
abc.world.use
wolrd
worldnurse
正確な古いテキストのみが置き換えられることを望みます。
- スクリプトを実行する場所からルート ディレクトリの下にあるサブフォルダーをスクリプトに再帰させるにはどうすればよいですか?
これまでの私のスクリプトは次のとおりです。
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText,1,1000,1)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strNewText
objFile.Close