Vbscript 在循环中打开每个文件

Vbscript 在循环中打开每个文件,vbscript,fso,Vbscript,Fso,我正在编写一个子程序,需要从目录中的文件中提取文本。例行公事如下。只要目录中只有一个文件,它就可以工作。当有多个文件时,它会告诉我下面的Set intFSO=intFSO.OpenTextFile(filePath,1)行 我假设我需要做一些事情来重置下一个文件,但我似乎无法弄清楚它是什么。有什么建议吗 Sub ExtractEDI(folPath) Dim sName, fil Dim intFSO Dim filePath Set intFSO = CreateObject

我正在编写一个子程序,需要从目录中的文件中提取文本。例行公事如下。只要目录中只有一个文件,它就可以工作。当有多个文件时,它会告诉我下面的
Set intFSO=intFSO.OpenTextFile(filePath,1)

我假设我需要做一些事情来重置下一个文件,但我似乎无法弄清楚它是什么。有什么建议吗

Sub ExtractEDI(folPath)
  Dim sName, fil
  Dim intFSO
  Dim filePath

  Set intFSO = CreateObject("Scripting.FileSystemObject")

  For Each fil In fso.GetFolder(folPath).Files
    filePath = folpath & "\" & fil.Name
    Set intFSO = intFSO.OpenTextFile(filePath, 1)

    'will process file here

    intFSO.Close
  Next
  Set intFSO = Nothing
End Sub
这个脚本还有更多内容。上面的例程被递归调用,以便遍历子目录。所有这些都很好

如果要在下一次迭代中再次使用文件句柄,请不要用文件句柄替换
FileSystemObject
实例。对文件使用不同的变量。并删除整个路径连接/
OpenTextFile
shebang。您可以直接从
文件
对象打开文件

这就是您所需要的(假设
fso
是一个全局
FileSystemObject
实例):

如果要在下一次迭代中再次使用文件句柄,请不要用文件句柄替换
FileSystemObject
实例。对文件使用不同的变量。并删除整个路径连接/
OpenTextFile
shebang。您可以直接从
文件
对象打开文件

这就是您所需要的(假设
fso
是一个全局
FileSystemObject
实例):


这是有道理的。非常感谢。@lankymart我将第一个代码段放在一个块引号中,表示它是从问题中引用的(当然减去“下划线”),这很有意义。非常感谢。@lankymart我将第一个代码段放在一个块引号中,表示它是从问题中引用的(当然减去“下划线”)。
Set intFSO = intFSO.OpenTextFile(filePath, 1)
'   ^^^^^^   ^^^^^^
Sub ExtractEDI(folPath)
  For Each fil In fso.GetFolder(folPath).Files
    Set f = fil.OpenAsTextStream

    'will process file here

    f.Close
  Next
End Sub