Not the most elegant alternative, I agree, and I am certain someone will tell me how it could be bettered. The key is it uses basic find a string (you can set as I have to be case insensitive) in a file then reports filename and line number, Line [9] in this case.

@forfiles /m *.txt /C "cmd /c (find /n /i \"For example\" "@file"1>nul) &&if %errorlevel%==0 (find /n /i \"For example\" "@file"2>nul)"
When used in a batch file it could look something like this, but see caveats below
Finder$.cmd
@echo off & Title Find wally String in a file
set "string=where's Wally"
if not "%1"=="" set "string=%~*"
forfiles /m *.txt /C "cmd /c (find /n /i \"%string%\" "@file"1>nul) &&if %errorlevel%==0 (find /n /i \"%string%\" "@file")"
echo/ & pause & exit /b

It is not perfect but note its not case sensitive (using /i), it can readily fail if *.txt files are not plain text and as written will only accept a short unquoted string of up to 9 words ( avoid " or other punctuation). It works in local directory with *.txt, but you could alter those as require to first say cd /d f:\mylogs
and search *.log files.
Finally you asked to open the file thus we can simplify for that task to call an editor like notepad or with some fetteling one that accepts line numbers (but that is another question)
forfiles /m *.txt /C "cmd /c (find /n /i \"%string%\" "@file"1>nul) &&if %errorlevel%==0 (notepad.exe "@file")"
