从文本文件中读取整数并替换为不同的整数

时间:2013-12-03 23:10:35

标签: vbscript

我正在使用以下代码

Dim objFSO, objFile, maxRetry, numRetries, newRetries
CONST ForReading = 1
CONST ForWriting = 2


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(MICacheFilename(), ForReading)
maxRetry = CInt(MIGetTaskParam("maxRetry"))

strText = objFile.ReadAll

Set numRetries  = CInt(objFile.ReadLine)
IF numRetries >= maxRetry THEN
    MISetTaskParam "RerunTask", "False"
    strLine = Replace(strLine,numRetries ,0)
Else
    MISetTaskParam "RerunTask", "True"
    Set newRetries = numRetries + 1
    strLine = Replace(strLine,numRetries ,newRetries)
END IF

MICacheFilename()MIGetTaskParam作为文件路径和整数传递到脚本中。我的目标是将传入的最大值与文件中的值进行比较,并根据比较设置MISetTaskParam。我对VB很新,这似乎比我发现的更容易。输入文件是一个只包含整数的文本文件。

虽然我的第一直觉是留在循环中,但这个脚本只是定期调用,需要是一个IF。

我目前收到错误object requried set numRetries = CInt(objFile.ReadLine)

1 个答案:

答案 0 :(得分:1)

mhopkins321,你说:

  

我目前收到错误对象需要set numRetries = CInt(objFile.ReadLine)

这是因为Set关键字仅使用 来设置包含对象实例的变量。在您的情况下,目的numRetries是保持整数

所以,试试这个:

numRetries = CInt(objFile.ReadLine)

我发现你的脚本有一些其他问题。这是我编辑的版本,带有一些评论:

Option Explicit  ' Checks that you have declared all variables

Dim objFSO, objFile, maxRetry, numRetries, newRetries
Dim strText, strLine  ' declare these also
CONST ForReading = 1
CONST ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(MICacheFilename(), ForReading)
maxRetry = CInt(MIGetTaskParam("maxRetry"))

' strText = objFile.ReadAll  ' Not needed

numRetries = CInt(objFile.ReadLine)  ' just read the one line in the file
WScript.Echo "numRetries = [" & numRetries & "]"
IF numRetries >= maxRetry THEN
    MISetTaskParam "RerunTask", "False"
    strLine = Replace(strLine,numRetries ,0)  ' does nothing, 'strline' is empty
Else
    MISetTaskParam "RerunTask", "True"
    newRetries = numRetries + 1
    strLine = Replace(strLine,numRetries ,newRetries)  ' does nothing, 'strline' is empty
END IF

WScript.Echo "strLine = [" & strLine & "]"

' Dummy Function.
Function MICacheFilename()
    MICacheFilename = "retries.txt"
End Function

' Dummy Function.
Function MIGetTaskParam(key)
    MIGetTaskParam = 13
End Function

' Dummy Sub.
Sub MISetTaskParam(arg1, arg2)
End Sub