标题: [文本处理] [已解决] 请教:findstr/i的参数中有空格怎么处理? [打印本页]
作者: locoman 时间: 2011-8-24 16:25 标题: [已解决] 请教:findstr/i的参数中有空格怎么处理?
本帖最后由 CrLf 于 2011-8-25 20:17 编辑
本意是想用以下语句获取系统中的3个信息:
%SystemDrive%\windows\system32\systeminfo.exe|findstr /i "初始安装日期 os 名称 os 版本"
但是由于systeminfo.exe的输出信息中有很多个关于OS的信息(OS 名称:,OS 版本:,OS制造商:,OS配置:,OS构件类型:BIOS 版本,),所以该命令没有完全实现所需想法——查询输出了所有含有OS的信息。
小生初入技浅,请教高手帮助:如何解决“OS 名称”和“OS 版本”其中的空格,达到只输出需要的这个两个参数信息。
谢谢!!!
语句实际输出是:
OS 名称: Microsoft Windows XP Professional
OS 版本: 5.1.2600 Service Pack 3 Build 2600
OS 制造商: Microsoft Corporation
OS 配置: 独立工作站
OS 构件类型: Uniprocessor Free
初始安装日期: 2011-7-13, 9:02:08
BIOS 版本: COMPAQ - 20030710
我想要的输出是:
OS 名称: Microsoft Windows XP Professional
OS 版本: 5.1.2600 Service Pack 3 Build 2600
初始安装日期: 2011-7-13, 9:02:08
作者: ArdentMan 时间: 2011-8-24 16:32
Findstr /ic:"OS 名称"
作者: locoman 时间: 2011-8-24 17:03
Findstr /ic:"OS 名称"
ArdentMan 发表于 2011-8-24 16:32
谢谢您的热诚!
但是,您提供的语句只能一个参数单独使用有效,而不能多个参数同时使用,多个参数同时使用时输出完全是空的。即您提供的语句只能这样使用:——
%SystemDrive%\windows\system32\systeminfo.exe|Findstr /ic:"初始安装日期"
%SystemDrive%\windows\system32\systeminfo.exe|Findstr /ic:"OS 名称"
%SystemDrive%\windows\system32\systeminfo.exe|Findstr /ic:"OS 版本"
这样,每个参数都得执行一次SYSTENINFO.exe文件,时间上显然很长,不科学。
而,我是想一次性执行systeminfo.exe就获取几个参数。
仍需高手们继续帮助完整解决,谢谢!!
作者: ArdentMan 时间: 2011-8-24 17:11
本帖最后由 ArdentMan 于 2011-8-24 17:13 编辑
利用临时文件好了:- @Echo Off
- systeminfo>list.txt
- For %%a In ("初始安装日期" "OS 名称" "OS 版本") Do Findstr /ic:"%%~a" list.txt
- Del list.txt
- Pause>Nul
复制代码
作者: 601997526 时间: 2011-8-24 17:13
- %SystemDrive%\windows\system32\systeminfo.exe|Findstr /ic:"初始安装日期" /c:"OS 名称" /c:"OS 版本"
复制代码
作者: locoman 时间: 2011-8-25 11:32
本帖最后由 locoman 于 2011-8-25 11:33 编辑
谢谢4楼和5楼的高手朋友!
神奇的是,您两个的代码输出结果都还是存在一个包含OS的多余的BIOS项目。
OS 名称: Microsoft Windows XP Professional
OS 版本: 5.1.2600 Service Pack 3 Build 2600
初始安装日期: 2011-7-13, 9:02:08
BIOS 版本: COMPAQ - 20030710 -----------------这项是不需要输出的!!
嘿嘿,这还真是神气的难题了!
作者: ArdentMan 时间: 2011-8-25 11:37
本帖最后由 ArdentMan 于 2011-8-25 11:47 编辑
- @Echo Off
- For /F "tokens=1* delims=:" %%i In ('SystemInfo') Do (
- For %%k In ("初始安装日期" "OS 名称" "OS 版本") Do If "%%~k" EQU "%%i" Echo %%i:%%j
- )
- Pause>Nul
复制代码
作者: ArdentMan 时间: 2011-8-25 11:54
本帖最后由 ArdentMan 于 2011-8-25 11:56 编辑
- SystemInfo|Findstr /ir "\<OS.*版本\> \<OS.*名称\> \<初始安装日期\>"
复制代码
作者: Hello123World 时间: 2011-8-25 13:19
回复 6# locoman
这并不神奇,- OS 版本: 5.1.2600 Service Pack 3 Build 2600
- BI OS 版本: COMPAQ - 20030710
复制代码
作者: FOR 时间: 2011-8-25 13:35
- findstr /ibc:"初始安装日期" /c:"os 名称" /c:"os 版本"
复制代码
作者: lvsehuaxue 时间: 2011-8-25 16:35
- @echo off
- systeminfo|findstr /il "初始安装日期 os\ \名称 os\ \版本"|findstr /vi "bios"
- pause
复制代码
作者: locoman 时间: 2011-8-25 19:24
本帖最后由 locoman 于 2011-8-25 19:37 编辑
人多力量大,江湖高人多!
终于完全实现需求,感谢所有参与讨论者的热情!!
7楼、8楼、10楼的方法均能完整实现需求。
11楼有问题,不能实现。
再次感谢大家,让所有的人又多了一点知识!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |