调用 windows 命令提示符并使用 find 检查字符串是否在文本文件中

Calling windows command prompt and use find to check if a string is in a text file

我想使用:

Set cmdLine = CreateObject("WScript.Shell")

然后我想做类似的事情:

check = cmdLine.Exec("%comspec% /C find /N "End of Report" D:\test3.txt)

但是我不太熟悉命令提示符中的编码...所以我真的不知道我在做什么。但我想在 .txt 文件中搜索一串文本,看看它是否存在......我真的不需要知道它在什么行号或任何东西上......只是如果它是是否找到。

PS- 我这样做是为了避免在找不到字符串时不得不打开文本文件。

我读到 find 有三个 %errorlevel% 响应之一。

0 – 找到了您要搜索的字符串。 1 – 未找到您正在搜索的字符串。 2 – 这意味着你的开关坏了或者你的参数不正确。

我真的不知道他们所说的 %errorlevel% 响应是什么意思...但我希望做类似的事情

if check = 0 then
    'do something
End if

意思是...如果找到了我要搜索的字符串...然后做点什么...

尝试以下操作。它使用 VBScript 来检索文件中的所有文本,如上面评论中所建议的,并对特定的搜索字符串进行不区分大小写的搜索。按要求修改:

Option Explicit

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objTextStream, allText
Dim searchTerm : searchTerm = "End of Report"

const strFileName = "D:\test3.txt"
const fsoForReading = 1

If objFSO.FileExists(strFileName) then

    Set objTextStream = objFSO.OpenTextFile(strFileName, fsoForReading)
    allText = objTextStream.ReadAll

    if instr(1,allText,searchTerm,1) > 0 Then
        MsgBox "Found"
    end if

    objTextStream.Close
    Set objTextStream = Nothing
End If

Set objFSO = Nothing

这是我找到的适合我的目的的解决方案。

Dim cmdLine As Object
Dim result As String
Dim SearchStr As String
Dim FilePath As String  

Set cmdLine = CreateObject("WScript.Shell")
result = cmdLine.Exec("%comspec% /C Find " & SearchStr & " " & Chr(34) & FilePath & Chr(34)).STDOut.ReadAll