Text 批处理文件以仅显示现有文本文件中的几行

Text 批处理文件以仅显示现有文本文件中的几行,text,Text,嗨,我一直试图从显示的现有文本中只获取几行。这是我一直在尝试的代码 type C:\SystemInfo1.txt | findstr /C:"OS Name:" | findstr /C:"OS Version:">c:\SystemInfo.txt c:\systeminfo.txt 这只适用于一种情况,即“操作系统名称”。有什么建议吗?试试这个: type C:\SystemInfo1.txt | findstr /C:"OS Name:" /C:"OS Version:" 关键

嗨,我一直试图从显示的现有文本中只获取几行。这是我一直在尝试的代码

type C:\SystemInfo1.txt | findstr /C:"OS Name:" | findstr /C:"OS Version:">c:\SystemInfo.txt
c:\systeminfo.txt
这只适用于一种情况,即“操作系统名称”。有什么建议吗?

试试这个:

type C:\SystemInfo1.txt | findstr /C:"OS Name:" /C:"OS Version:"
关键是只使用findstr一次,但根据需要将多个字符串传递给它

通过去掉“type”命令和管道,您可以进一步简化:

findstr /C:"OS Name:" /C:"OS Version:"  C:\SystemInfo1.txt
如果您搜索的字符串总是在一行的开头,这可能有助于您克服您评论的问题(操作系统与BIOS):


这是使用正则表达式在行首搜索“OS”,然后搜索“版本”或“名称”。

不确定要执行的操作。为什么你要搜索两次操作系统名称?很抱歉,我没有看到它是两次,第二次是“操作系统版本”。从一个系统信息文本文件中,我只需要一些信息,不是全部。谢谢,我尝试了第一个,但我得到了所有包含“版本”的信息。真的吗?什么版本的Windows?我在WindowsXPSP3上测试这个,我得到的所有行中都有“OS名称”或“OS版本:”这两个词,但不只是“版本”。我的意思是我也得到BIOS版本,我有相同的OS:-)当然,“BIOS版本”包含“OS版本”。根据文件格式的不同,您可以约束匹配项以排除不需要的匹配项,或者将其通过管道传输到另一个findstr以排除“BIOS”:
[以前的代码…]| findstr/V BIOS
hmm…我想/c:“命令将严格查找“OS版本”
findstr /R "^OS (Version|Name)" C:\SystemInfo1.txt