如何在VBScript中运行与循环相关的文本?

如何在VBScript中运行与循环相关的文本?,vbscript,Vbscript,我知道如何在VBScript中使用For循环来执行算术或任何数学运算。有人能解释一下如何在VBScript中为字符串使用For循环吗 例如: 我有一个名为files\u list.txt的文件,其中包含一组文本。我正在使用以下代码使用For循环,使用If..Else操作打印某些文本 Set objFSO = CreateObject("Scripting.FileSystemObject") Dim file, filegroup Set objfile = objFSO.openTextF

我知道如何在VBScript中使用
For
循环来执行算术或任何数学运算。有人能解释一下如何在VBScript中为字符串使用
For
循环吗

例如:

我有一个名为
files\u list.txt
的文件,其中包含一组文本。我正在使用以下代码使用
For
循环,使用
If..Else
操作打印某些文本

Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim file, filegroup

Set objfile = objFSO.openTextFile("D:\Users\krkarthi\Desktop\files_list.txt")

filegroup = objfile.ReadAll

For Each file In filegroup
    If objFSO.FileExists(file) = True Then
        result = WScript.Echo(Now & " The file &file exists")
    Else 
        result = WScript.Echo(Now & " The file &file do not exists")
    End If

根据上面的代码,我已经在
files\u list.txt
中复制了我想要监视的所有文件路径。通过使用
For
循环,我想使用
objFSO.FileExists()
语句检查特定文件是否存在。但不幸的是,由于某些问题,代码无法执行。有人能帮我吗?

您正在使用
ReadAll
方法,然后尝试逐行遍历返回的结果。这不起作用,因为
ReadAll
将整个文件内容作为单个字符串返回(而不是您可能期望的字符串数组)

为了遍历字符串的行,需要首先拆分它:

Dim lines, line
lines = Split(filegroup, vbNewLine)
For Each line In lines
    ' ...
Next
那就行了。但是,这并不是遍历文本文件行(尤其是大型文件)的最佳方式,更不用说担心使用什么类型的字符了

幸运的是,还有另一种方法叫做
ReadLine
,您可以使用它一次直接从文本文件中读取一行。在这种情况下,您需要使用
Do
循环,而不是
For
循环:

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.openTextFile("The\path\to\your\file.txt")

Dim currentLine
Do Until objFile.AtEndOfStream
    currentLine = objFile.ReadLine
    If objFSO.FileExists(currentLine) Then
        ' ...
    Else 
        ' ...
    End If
Loop

您正在使用
ReadAll
方法,然后尝试逐行遍历返回的结果。这不起作用,因为
ReadAll
将整个文件内容作为单个字符串返回(而不是您可能期望的字符串数组)

为了遍历字符串的行,需要首先拆分它:

Dim lines, line
lines = Split(filegroup, vbNewLine)
For Each line In lines
    ' ...
Next
那就行了。但是,这并不是遍历文本文件行(尤其是大型文件)的最佳方式,更不用说担心使用什么类型的字符了

幸运的是,还有另一种方法叫做
ReadLine
,您可以使用它一次直接从文本文件中读取一行。在这种情况下,您需要使用
Do
循环,而不是
For
循环:

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.openTextFile("The\path\to\your\file.txt")

Dim currentLine
Do Until objFile.AtEndOfStream
    currentLine = objFile.ReadLine
    If objFSO.FileExists(currentLine) Then
        ' ...
    Else 
        ' ...
    End If
Loop

因为某个问题“到底是什么?”因为某个问题“到底是什么?谢谢艾哈迈德。还有一件事,post if condition,我想写一些类似WScript.echo(“文件currentLine exists”)的东西。在上面提到的echo中,如何捕获echo语句中的当前行。换句话说,在CurrentLine的位置上,我需要打印该位置的确切文件名time@karthik,您可以使用WScript.Echo(“文件”¤tLine&“存在”)。谢谢Ahmed。还有一件事,post if condition,我想写一些类似WScript.echo(“文件currentLine exists”)的东西。在上面提到的echo中,如何捕获echo语句中的当前行。换句话说,在CurrentLine的位置上,我需要打印该位置的确切文件名time@karthik,您可以使用WScript.Echo(“文件”¤tLine&“存在”)。