重新定义常量变量?

时间:2018-12-30 02:23:57

标签: variables vbscript scripting numbers constants

我正在使用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

1 个答案:

答案 0 :(得分:3)

在VBScript中,在编译时将常量替换为代码中的常量,但是直到到达Const语句(读取http://docs.python-requests.org/en/master/user/quickstart/#make-a-request)后,声明才发生。

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

因此,解决方案是将常量声明置于For循环之外。