重新定义常量变量?

Constant Variable Re-defined?

我正在使用 VBScript 根据模式挑选出 .txt 文件的某些部分,然后将其输出到另一个 .txt 文件中。 VBScript 从批处理文件 (.BAT) 启动,VBScript 创建名为 'proceed.txt' 的 .txt 文件的部分是为了让批处理文件可以知道 VBScript 何时完成,并可以继续。

我不断收到错误消息,指出第 13 行的变量 ForWriting 已经定义,但我在代码中没有看到之前定义它的任何地方。我试图完全消除 ForWriting 变量,并在 "hourextracted.txt" 部分后面放一个 2,但由于某些奇怪的原因,脚本在这种情况下非常不稳定。

另一件奇怪的事情是脚本确实有效。它工作正常。我不断收到错误消息,但脚本仍然可以正常工作,而且效果很好。我只想让错误消息消失。我有几个其他脚本与批处理文件中使用的脚本基本相同,即使代码相同,它们也能正常工作而不会收到错误消息。但是,只有这一个会收到错误消息。

代码如下:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("hour.txt", ForReading)
strSearchString = objFile.ReadAll
objFile.Close
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.Pattern = "\d{2}"
Set colMatches = objRegEx.Execute(strSearchString)  
If colMatches.Count > 0 Then
    For Each strMatch in colMatches
        Set obj = CreateObject("Scripting.FileSystemObject")
        Const ForWriting = 2
        Set obj1 = obj.OpenTextFile("hourextracted.txt", ForWriting)
        obj1.WriteLine(strMatch.Value)
        obj1.Close
        Set obj = Nothing 
        outFile = "proceed.txt"
        Set objFile = objFSO.CreateTextFile(outFile,True)
        objFile.Write "null" & vbCrLf
        objFile.Close
    Next
End If

在 VBScript 中,常量在编译时在代码中被替换,但在到达 Const 语句之前不会发生声明(读取 here)。

如果将 Const 声明放在 For 循环中,VBScript 引擎将尝试在每次迭代时声明常量。

所以,解决方案就是将常量声明放在 For 循环之外。