Как запустить текст, связанный с циклом в VBScript? - PullRequest
0 голосов
/ 21 мая 2018

Я знаю, как использовать циклы For в VBScript для выполнения арифметических или любых математических операций.Может кто-нибудь объяснить, как использовать цикл For для строк в VBScript?

Например:

У меня есть файл с именем 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().Но, к сожалению, код не может быть выполнен из-за какой-то проблемы.Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 21 мая 2018

Вы используете метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...