|
baikaifang
初级用户
积分 68
发帖 32
注册 2006-10-20
状态 离线
|
『第
16 楼』:
Quote: | Originally posted by lxmxn at 2007-6-4 16:38:
不要怪别人没有看,你的意思根本没有说清楚,所以大家也懒得看了。
说不清楚举个例子出来,不要说一些有歧义的话。 |
|
lxmxn版主你好,是我的不对,你别怪我了好吗,在这里跟你说声"对不起",也要谢谢你的支持
terse 朋友,我用你上面改进 lxmxn版主 的批处理
@echo off
for /f "tokens=1* delims=:" %%i in ('findstr /risc:"PCI\\\VEN_....&" *.inf') do (
echo %%j=%%~fdpi >>123.txt
)
pause
提取出来的内容是下面这样的
%DEVICE_DESCRIPTION_9K% = Install, PCI\VEN_13C1&DEV_1002&SUBSYS_100213C1=C:\M\3\1\O\oemsetup.inf
%DEVICE_DESCRIPTION_9X% = Install, PCI\VEN_13C1&DEV_1003&SUBSYS_100313C1=C:\M\3\1\O\oemsetup.inf
%aec6897.DeviceDesc% = aec689x_Inst, PCI\VEN_1191&DEV_000B&SUBSYS_1191000B=C:\M\A\6\aec6897.inf
%aec6898.DeviceDesc% = aec689x_Inst, PCI\VEN_1191&DEV_000B&SUBSYS_11916898=C:\M\A\6\aec6897.inf
%PCI\VEN_9005&DEV_00C0&SUBSYS_F6209005.DeviceDesc% = adpu160m_Inst,PCI\VEN_9005&DEV_00C0&SUBSYS_F6209005=C:\M\AD\5\ADPU160M.INF
%PCI\VEN_9005&DEV_00C0&SUBSYS_F6200E11.DeviceDesc% = adpu160m_Inst,PCI\VEN_9005&DEV_00C0&SUBSYS_F6200E11=C:\M\AD\5\ADPU160M.INF
能再改进一下,只输出红色部分的内容吗!真的谢谢您
[ Last edited by baikaifang on 2007-6-4 at 10:50 PM ]
|
|
2007-6-4 22:37 |
|
|
baikaifang
初级用户
积分 68
发帖 32
注册 2006-10-20
状态 离线
|
『第
17 楼』:
Quote: | Originally posted by lxmxn at 2007-6-3 15:49:
第一个\对第二个\取消转义,得到一个“真实”的\,然后这个\去取消第三个\的特殊意义。(我是这样理解的)
至于不是以PCI\VEN打头,我是看楼主的说明这样写的:
|
|
版主,我试了一下,二个"\",和三个"\",在我这里使用,输出的内容是一样的.
|
|
2007-6-4 23:04 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
18 楼』:
问题是你不是没每行都是这样的 有的有,有的还是没吧?
要是每行都这样那还可以
|
|
2007-6-4 23:12 |
|
|
baikaifang
初级用户
积分 68
发帖 32
注册 2006-10-20
状态 离线
|
『第
19 楼』:
是呀,提取出来的内容好乱,有很多是不需要的,也输出了,还有很多重复的.看来真难搞呀.
|
|
2007-6-4 23:16 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
20 楼』:
再改一下版主的:
@echo off&setlocal enabledelayedexpansion
for /f "delims=: tokens=1*" %%i in ('findstr /ris "PCI\\\VEN_....&" *.inf') do (
set "m=%%j"
set n=%%~fdpxi
set "m=!m:*,=!"
echo !m!=!n! >>test.txt
)
pause
|
|
2007-6-5 00:22 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
21 楼』:
试试这个,需要外部命令grep。
@echo off
for /r C:\M\ %%a in (*.inf) do (
for /f "tokens=1* delims=:" %%b in ('grep -o "PCI\\VEN_[[:alnum:]]\{4\}&DEV_[[:alnum:]]\{4\}&SUBSYS_[[:alnum:]]\{8\}" "%%a"') do (
echo\%%b=%%a>>result.txt
)
) grep 下载地址:http://zhenlove.com.cn/cndos/fileup/files/grep.rar
|
|
2007-6-5 00:39 |
|
|
baikaifang
初级用户
积分 68
发帖 32
注册 2006-10-20
状态 离线
|
『第
22 楼』:
Quote: | Originally posted by terse at 2007-6-5 00:22:
再改一下版主的:
@echo off&setlocal enabledelayedexpansion
for /f "delims=: tokens=1*" %%i in ('findstr /ris "PCI\\\VEN_....&" *.inf') do (
set &quo ... |
|
比前面的效果好一些了,不过还是有很多不需要的.例如:
PCI\VEN_9004&DEV_7815.DeviceDesc="Adaptec Memory Controller / XOR Engine" =C:\M\AD\8\oemsetup.inf
SupportedSubsystemIDs,%PCI\VEN_1095&DEV_3512.DeviceDesc%,0x00010001, 0x35121095=C:\M\AD\9\ASH1205.inf
%Win98SupportedControllersSubKey%,%PCI\VEN_1095&DEV_3512.DeviceDesc%,0x00010001, 0x35121095=C:\M\AD\9\ASH1205.inf
PCI\VEN_8086&DEV_24DF.DeviceDesc = "Adaptec Embedded Serial ATA HostRAID"=C:\M\AD\A\AARICH.INF
辛苦大侠了.
下面 lxmxn 版主的基本上可以了.有一些重复的.不过可以手工删除就行了.
Quote: | Originally posted by lxmxn at 2007-6-5 00:39:
试试这个,需要外部命令grep。
[code]
@echo off
for /r C:\M\ %%a in (*.inf) do (
for /f "tokens=1* delims=:" %%b in ('grep -o "PCI\\VEN_[[:alnum:]]\{4\}&DEV_[[:aln ... |
|
版主真厉害,上面的代码,非常好.非常感谢
提取出来的内容是同样长度的,下面是效果:
PCI\VEN_13C1&DEV_1002&SUBSYS_100213C1=C:\M\3\1\oemsetup1.inf
PCI\VEN_13C1&DEV_1002&SUBSYS_100213C1=C:\M\3\1\O\oemsetup.inf
PCI\VEN_13C1&DEV_1003&SUBSYS_100313C1=C:\M\3\1\O\oemsetup.inf
还有与上面长度不一样的没能提出来:
PCI\VEN_13C1&DEV_1000
PCI\VEN_1103&DEV_0004&REV_03
[ Last edited by baikaifang on 2007-6-5 at 09:17 PM ]
|
|
2007-6-5 20:57 |
|
|
baikaifang
初级用户
积分 68
发帖 32
注册 2006-10-20
状态 离线
|
『第
23 楼』:
如果版主,把代码改下,对3种格式的分别处理,就可以把3种格式的全部提出来,最后把输出的文件组合起来也行.
顺便问下,下面这句的具体意思.我好搞懂可以自己修改一下.提取不同格式的内容.
for /f "tokens=1* delims=:" %%b in ('grep -o "PCI\\VEN_[[:alnum:]]\{4\}&DEV_[[:alnum:]]\{4\}&SUBSYS_[[:alnum:]]\{8\}" "%%a"')
谢谢
|
|
2007-6-5 21:14 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
24 楼』:
Re baikaifang:
你要提取的类似“PCI\VEN_13C1&DEV_1002&SUBSYS_100213C1”这样的字符串有什么特点可以“利用”呢?
如果有一些区别其它字符串的特点,我想事情也会变得容易些的。
至于这个 grep 命令,是查找匹配的字符并且只输出匹配的字符,如果想深入学习它的用法,可以到网上搜索相关的资料来看看。
|
|
2007-6-5 21:52 |
|