![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 18:03 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]提取文件中格式类似的字符[有点难坛论没见过的] |
| 可打印版本 2,704 / 23 |
| 第16楼 baikaifang | 发表于 2007-06-04 22:37 |
| 初级用户 发帖 32 积分 68 | |
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 ] |
|
| 第17楼 baikaifang | 发表于 2007-06-04 23:04 |
| 初级用户 发帖 32 积分 68 | |
Originally posted by lxmxn at 2007-6-3 15:49: 版主,我试了一下,二个"\",和三个"\",在我这里使用,输出的内容是一样的. |
|
| 第18楼 terse | 发表于 2007-06-04 23:12 |
| 银牌会员 发帖 946 积分 2,404 | |
|
问题是你不是没每行都是这样的 有的有,有的还是没吧?
要是每行都这样那还可以 |
|
| 第19楼 baikaifang | 发表于 2007-06-04 23:16 |
| 初级用户 发帖 32 积分 68 | |
|
是呀,提取出来的内容好乱,有很多是不需要的,也输出了,还有很多重复的.看来真难搞呀.
|
|
| 第20楼 terse | 发表于 2007-06-05 00:22 |
| 银牌会员 发帖 946 积分 2,404 | |
|
再改一下版主的:
@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 |
|
| 第21楼 lxmxn | 发表于 2007-06-05 00:39 |
| 版主 发帖 4,938 积分 11,386 | |
|
试试这个,需要外部命令grep。
grep 下载地址:http://zhenlove.com.cn/cndos/fileup/files/grep.rar |
|
| 第22楼 baikaifang | 发表于 2007-06-05 20:57 |
| 初级用户 发帖 32 积分 68 | |
Originally posted by terse at 2007-6-5 00:22: 比前面的效果好一些了,不过还是有很多不需要的.例如: 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 版主的基本上可以了.有一些重复的.不过可以手工删除就行了. Originally posted by lxmxn at 2007-6-5 00:39: |
|
| 第23楼 baikaifang | 发表于 2007-06-05 21:14 |
| 初级用户 发帖 32 积分 68 | |
|
如果版主,把代码改下,对3种格式的分别处理,就可以把3种格式的全部提出来,最后把输出的文件组合起来也行.
顺便问下,下面这句的具体意思.我好搞懂可以自己修改一下.提取不同格式的内容. for /f "tokens=1* delims=:" %%b in ('grep -o "PCI\\VEN_[[:alnum:]]\{4\}&DEV_[[:alnum:]]\{4\}&SUBSYS_[[:alnum:]]\{8\}" "%%a"') 谢谢 |
|
| 第24楼 lxmxn | 发表于 2007-06-05 21:52 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re baikaifang:
你要提取的类似“PCI\VEN_13C1&DEV_1002&SUBSYS_100213C1”这样的字符串有什么特点可以“利用”呢? 如果有一些区别其它字符串的特点,我想事情也会变得容易些的。 至于这个 grep 命令,是查找匹配的字符并且只输出匹配的字符,如果想深入学习它的用法,可以到网上搜索相关的资料来看看。 |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |