我知道如何在VBScript中使用For
循环来执行算术或任何数学运算。有人可以解释如何在VBScript中使用For
循环字符串吗?
例如:
我有一个名为files_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_list.txt
中要监视的所有文件路径。通过使用For
循环,我想使用objFSO.FileExists()
语句检查特定文件是否存在。但遗憾的是,由于某些问题,代码无法执行。有人可以帮我吗?
答案 0 :(得分:2)
您正在使用ReadAll
方法,然后尝试逐行迭代返回的结果。这不起作用,因为ReadAll
将整个文件内容作为单个字符串返回(不是像您期望的那样的字符串数组)。
为了遍历字符串的行,您需要先拆分它:
Dim lines, line
lines = Split(filegroup, vbNewLine)
For Each line In lines
' ...
Next
那将会奏效。但是,这不是迭代文本文件行的最佳方式(特别是对于大文件),更不用说担心使用了哪种EOL
字符。
幸运的是,还有另一个名为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