我正在尝试重复替换文件中的文本。但是,一旦我替换了文本,它就会再次被替换。
我使用一个 .vbs 文件来替换文本,以及一个 .bat 文件来重复执行 .vbs 文件。我试图以这样的方式执行它,即在替换文本后,不再替换它。
我有一个名为 replace.vbs 的 .vbs 文件,我从这个链接中获取:
如何在 Windows 命令行环境中查找和替换文件中的文本?
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)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText 'WriteLine adds extra CR/LF
objFile.Close
我有一个批处理文件,可以重复执行replace.vbs(完整脚本重复运行 replace.vbs 56次)。
SET abcpath=C:\test\myFile.txt
cscript replace.vbs %abcpath% "Hello World" "Testing"
cscript replace.vbs %abcpath% "Testing" "Text"
PAUSE
我的myFile.txt文件中的文本是"Hello World Testing",期望的输出是"Testing Text",但实际输出是"Text Text"。如何让第二次执行replace.vbs时忽略掉第一次执行时替换过的所有文本?
可能有一个更简单的解决方案我没有想到,所以我想先退回一步。实际上我正在尝试处理包含字母a到g(大小写不敏感)后面跟着最多3个撇号或4个逗号的文本文件(该文件不包含逗号和撇号)。共有52种组合方式,我正在尝试将每种可能的组合映射到一个字母(因为它区分大小写,所以有52个不同的字母)。