调用 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
我想使用:
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