当我的代码运行时,它会启动一个命令提示符,并在 cmd 屏幕上显示连续的数据流,然后命令提示符上出现的所有内容都会输出到一个 txt 文件。所以我能够成功地记录所有输出,但我希望只输出出现在启动的命令提示符上的某个字符串,而不是出现在 cmd 上的连续数据流。
例子
myScript.bat 执行并启动命令提示符,开始在新行上显示新数据,我在下面写的数据不是我的实际数据,但格式相同。
1。执行脚本 2。命令提示符启动并立即开始显示数据
[2023-03-09 14:36:57], Hey bro
[2023-03-09 14:36:57], Hey sis
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:36:58], Hey sis
[2023-03-09 14:36:58], Hey bro
[2023-03-09 14:37:00], Hey bro
[2023-03-09 14:37:00], Hey sis
[2023-03-09 14:37:00], Hey cousin
[2023-03-09 14:37:00], Hey sis
[2023-03-09 14:37:00], Hey sis
...
3。启动的命令提示符上显示的所有数据都保存到文本文件中。 myScript_results.txt
[2023-03-09 14:36:57], Hey bro
[2023-03-09 14:36:57], Hey sis
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:36:58], Hey sis
[2023-03-09 14:36:58], Hey bro
[2023-03-09 14:37:00], Hey bro
[2023-03-09 14:37:00], Hey sis
[2023-03-09 14:37:00], Hey cousin
[2023-03-09 14:37:00], Hey sis
[2023-03-09 14:37:00], Hey sis
我想要什么 -> 我希望输出文本文件只保存它说“表哥”这个词的行并丢弃其余数据,这意味着 myScript_results.txt 将如下所示:
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:36:58], Hey cousin
[2023-03-09 14:37:00], Hey cousin
我当前代码的片段
Set log=C:\folder\myScript_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.log
ping -n 1 IP Address| find "TTL=" >nul
if errorlevel 1 (
echo X is OFFLINE
) else (
echo X is ONLINE
start C:\Windows\System32\telnet IPADDRESS PORTNUM -f %log%
cscript C:\folder\telnet_keyboard_strokes.vbs
)
我知道如何使用“查找”功能读取一个已经存在的txt文件并找到您想要的字符串,如下所示:
cd C:\folder\myScript
find "cousin" output_Cousin.txt
pause
但是,当我试图在实时生成的数据中找到一个字符串时,我不确定如何合并它,一旦我 telnet 进入,该字符串就会不断流式传输。
感谢您提前提供任何指导和示例!