Рейтинг:
0
CHill60
Ну, это всегда хорошая идея, чтобы на самом деле открыть файл первым!
Dim objFile, tmpStr, objFSO
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile= objFSO.OpenTextFile("C:\Users\Desktop\TS.txt", ForReading)
Тогда вы можете прочитать его строка за строкой, если действительно хотите...
Do While Not objFile.AtEndOfStream
tmpStr = objFile.readline
' Do your checks in here
Loop
objFile.Close
Или вы можете просто прочитать весь файл целиком
tmpStr = objFile.ReadAll
Ваша следующая проблема-это то, что вы пытаетесь найти
substrToFind = "2w" & "fr" & "6J"
на самом деле это приведет к тому, что вы попытаетесь найти строку
"2wfr6J"
- Я не думаю, что это действительно то, что вы имеете в виду. Вы должны искать 2w, fr и 6J отдельно.
Dim b1, b2, b3
b1 = False : b2 = False : b3 = False
Const vbTextCompare = 1
If Instr(1, tmpStr, "2w", vbTextCompare) > 0 Then
b1 = True
End If
If Instr(1, tmpStr, "fr", vbTextCompare) > 0 Then
b2 = True
End If
If Instr(1, tmpStr, "6J", vbTextCompare) > 0 Then
b3 = True
End If
If b1 And b2 And b3 Then
WScript.Echo "Found"
End If
Также обратите внимание, что я сделал поиск текстовым поиском - по умолчанию для Instr используется двоичный код.
Наконец, вот некоторые справочные материалы - всегда хорошее место для начала
Метод VBScript - OpenTextFile[
^]
Метод VBScript - ReadAll[
^]
Функция VBScript - InStr[
^]
Member 14156312
Спасибо, отличное решение. Но я все равно получаю имя ошибки redifined vbTextCompare
CHill60
Затем удалите линию Const vbTextCompare = 1
Вы, должно быть, уже где-то определили его (или он предопределен для вас... прошло много времени с тех пор, как я использовал vbScript)
Member 14156312
Но это не сработало. с помощью этого кода ниже
Member 14156312
Но это выглядело не работать
Тусклый b1, b2, b3
Dim objFile, tmpStr, objFSO
Const ForReading = 1
Set objFSO = CreateObject("Scripting.Filesystemobject, с")
Set objFile= objFSO.OpenTextFile("C:\Users\TT.txt", ForReading)
tmpStr = objFile.ReadAll
WScript.Эхо tmpStr
b1 = False : b2 = False : b3 = False
Если Instr(1, tmpStr, "2w") > 0, то
В1 = истина
Конец, Если
Если Instr(1, tmpStr, "fr") > 0, то
В2 = истина
Конец, Если
Если Instr(1, tmpStr, "6J") > 0, то
В1 = истина
Конец, Если
Если b1 и b2 и b3 то
WScript.Эхо "Найдено"
Конец, Если
CHill60
Я обновил свое решение - я не установил значение для b3 (не отредактировал его должным образом после копирования+вставки). Где он сказал
If Instr(1, tmpStr, "6J") > 0 Then
b1 = True
End If
это должно было читать
If Instr(1, tmpStr, "6J") > 0 Then
b3 = True
End If
Member 14156312
Но он все равно не работает, он не может проверить строку, найденную или нет в текстовом файле.
Тусклый b1, b2, b3
Dim objFile, tmpStr, objFSO
Const ForReading = 1
Set objFSO = CreateObject("Scripting.Filesystemobject, с")
Set objFile= objFSO.OpenTextFile("C:\Users\TST.txt", ForReading)
tmpStr = objFile.ReadAll
WScript.Эхо tmpStr
b1 = False : b2 = False : b3 = False
Если Instr(1, tmpStr, "2w") > 0, то
В1 = истина
Конец, Если
Если Instr(1, tmpStr, "fr") > 0, то
В2 = истина
Конец, Если
Если Instr(1, tmpStr, "6J") > 0, то
Б3 = истина
Конец, Если
Если b1 и b2 и b3 то
WScript.Эхо "Найдено"
Конец, Если
CHill60
"Строка"...все 3 строки должны присутствовать для того, чтобы это слово было найдено.
Вы изменили это, чтобы сделать двоичное сравнение вместо текста..попробуйте положить это обратно
Member 14156312
Что ты имеешь в виду? Я ничего не меняю в этом коде, я просто удаляю vbTextcompare
CHill60
Удаление vbTextCompare позволяет InStr по умолчанию использовать двоичное сравнение.
У вас также все еще есть ошибка из моего первоначального поста, которую я исправил для вас. См. комментарий выше
Member 14156312
вы имеете в виду этот код?
Это тоже не работает.
Dim objFile, tmpStr, objFSO
Const ForReading = 1
Set objFSO = CreateObject("Scripting.Filesystemobject, с")
Set objFile= objFSO.OpenTextFile("C:\Users\TST.txt", ForReading)
tmpStr = objFile.ReadAll
Тусклый b1, b2, b3
b1 = False : b2 = False : b3 = False
Если Instr(1, tmpStr, "2w", vbTextCompare) > 0, то
В1 = истина
Конец, Если
Если Instr(1, tmpStr, "fr", vbTextCompare) > 0, то
В2 = истина
Конец, Если
Если Instr(1, tmpStr, "6J", vbTextCompare) > 0, то
Б3 = истина
Конец, Если
Если b1 и b2 и b3 то
WScript.Эхо "Найдено"
Конец, Если
CHill60
"Это не работает" не помогает. Вы проверяете другой файл, чем в вашем решении. Вы также проверяете наличие различных значений - действительно ли файл содержит проверяемый текст?
Member 14156312
Ya, строка ("2w", "fr", "6") содержит TST.txt файл.
CHill60
"6" или "6J"? Быть точным. В вашем решении ниже, которое, как вы утверждаете, работает, эхо-это все три найденных сообщения или только два из них? Потому что ваш код не сильно отличается от моего - вы просто повторяете, что нашли их.
Member 14156312
"6J" . три из найденных эхом сообщений работают.
CHill60
В этом случае мой код тоже должен работать. Однако, чтобы ответить на вопрос, который вы разместили в качестве решения, вам нужно понять, как использовать "else" VBScript Tutorial - Оператор If[^]