有很多方法可以解决这个问题,但我不建议您摆弄替换 ID 中的单个字符。如果你想走 VBScript 路线,你可以使用 dictionary 来存储计算机名到 ID 的映射并在替换中使用它。
Set deviceIDs = CreateObject("Scripting.Dictionary")
deviceIDs.Add "computer A", "ID A"
deviceIDs.Add "computer B", "ID B"
deviceIDs.Add "computer C", "ID C"
...
Set fso = CreateObject("Scripting.FileSystemObject")
ini = fso.OpenTextFile("C:\path\to\your.ini").ReadAll
Set re = New RegExp
re.Pattern = "(device id = ).*"
Set net = CreateObject("WScript.Network")
ini = re.Replace(ini, "$1" & deviceIDs(net.ComputerName))
fso.OpenTextFile("C:\path\to\your.ini").Write ini
如果您在其他文件(例如 CSV)中有计算机名称到设备 ID 的映射,您也可以使用该文件来填充字典:
Set deviceIDs = CreateObject("Scripting.Dictionary")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\path\to\device_id.csv")
Do Until f.AtEndOfStream
id = Split(f.ReadLine, ",")
deviceIDs.Add id(0), id(1)
Loop
f.Close
编辑:要替换特定行中的特定字符,您可以执行以下操作:
lineNumber = 23
Set fso = CreateObject("Scripting.FileSystemObject")
ini = Split(fso.OpenTextFile("C:\path\to\your.ini").ReadAll, vbNewLine)
Set re = New RegExp
re.Pattern = "^(.{16})3"
ini(lineNumber) = re.Replace(ini(lineNumber), "$16")
fso.OpenTextFile("C:\path\to\your.ini").Write Join(ini, vbNewLine)