如何在VB中读取和替换文件中的字符串?

时间:2012-01-11 19:03:29

标签: vbscript

不幸的是我的VB知识非常少,但我需要一个脚本来执行以下操作: 我有一个文件Licenses.txt,每行包含一个许可证:
License 1
License 2
License 3

我有另一个文件response.ini,其格式为ProductKey,格式为:ProductKey=XXXXX-XXXXXX-XXXXXX-XXXX

我想做以下事项:
从Licenses.txt中读取第一个许可证。如果它是免费的(如果许可证不在Used之后是免费的),那么它应该替换response.ini中的XXXXX-XXXXXX-XXXXXX-XXXX值并在第一个许可证之后放置Used ,所以在License.txt中它应该保持License 1 - Used。如果我再次运行它,那么它应该使用第二个许可证并将Used放在它之后等。如果我没有任何免费许可证,那么我应该得到一个ErrorMessage。

希望你能理解我想做什么。有人能帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个完全符合你想要的脚本。

Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")

'Read the licence.txt file
Dim f : Set f = oFSO.OpenTextFile("Licence.txt", 1)
Dim sData : sData = f.ReadAll
f.close

'Find next available licence
licenceKey = ""
Dim sLine : for each sLine in split(sData, vbNewLine)
    if (lcase(right(sLine,7)) <> " - used") then
        licenceKey = sLine
        exit for
    end if
Next

if (licenceKey = "") then
    'Show error if no licences are available
    msgbox "No available licences! ", vbOkOnly + vbexclamation, "Licence"
else
    'Write a Response.ini file
    Set f = oFSO.OpenTextFile("Response.ini", 2, true)
    f.Write licenceKey
    f.close

    'Mark the licence as used
    sData = replace(sData, licenceKey, licenceKey & " - Used")

    'ReWrite the licence.txt file
    Set f = oFSO.OpenTextFile("Licence.txt", 2)
    f.Write sData
    f.close
end if