标题: [文本处理] 已解决,请教批处理如何提取文本中的特定的文本? [打印本页]
作者: gyue 时间: 2021-10-30 19:33 标题: 已解决,请教批处理如何提取文本中的特定的文本?
本帖最后由 gyue 于 2021-11-10 10:22 编辑
请问批处理可以提取文本中的特定文字到新文本吗?或者是复制特定文字到新文本。
具体是我用ADIA64生成文本报告,但是没用的报告文字太多只想截取以下特定的数据;
报告中的ATA各个硬盘的型号,序列号。
主机型号,序列号。网卡的的mac地址(物理有线,跟无线网卡)。
链接:https://pan.baidu.com/s/1KAor6v7GDnCyC5TiChFPpA
提取码:6bd6
最终需求效果
系统
产品型号:OMEN by HP Laptop 15-dc0xxx
序列号:5CD9156836
CPU
制造商:Intel(R) Corporation
版本:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
内存
制造商:Samsung
序列号:310623C4
部件号:M471A1K43CB1-CTD
大小:8G
类型:DDR4
最大时钟频率:2667 MT/s
最大内存容量 :32G
插槽:2
ATA
型号 ID: INTEL SSDPEKKF256G8L
序列号 : BTHH83940JXM256B
型号 ID: ST2000LM007-1R8176
序列号 : WDZV90NM
网络
网络适配器: Realtek Gaming GbE Family Controller
接口类型 : Ethernet
硬件地址(MAC) : C4-65-16-AC-A7-11
网络适配器: Intel(R) Wireless-AC 9560 160MHz
接口类型 : 802.11 Wireless Ethernet
硬件地址(MAC): A8-6D-AA-72-7D-EC
显示适配器
设备描述:GeForce GTX 1050 Ti
显存大小:4GB
显示适配器
设备描述: Intel(R) UHD Graphics 630
显存大小:1GB
PCI/AGP 视频
Intel UHD Graphics 630 显示适配器
作者: Batcher 时间: 2021-10-30 21:50
回复 1# gyue
请把你测试用的文件上传到阿里云盘或百度网盘
作者: gyue 时间: 2021-10-30 22:32
本帖最后由 gyue 于 2021-10-30 22:35 编辑
回复 2# Batcher
已上传,ADIA输出的文件格式没动,由于可能每台机器配置不一样,可能会涉及多硬盘,多序列号 所以安行搜索应该是对应不上,不知道能按关键字搜索行不行
链接:https://pan.baidu.com/s/1you3x8NaUU2BI5qr1WZW0g
提取码:d7ij
--来自百度网盘超级会员V6的分享
作者: yakeyun 时间: 2021-10-31 10:54
回复 3# gyue
这个是静默参数导出的,还是手动导出的?如果是静默导出格式就是一致的,如果是手动导出,由于界面布局不同,勾选的参数不同,可能有差异。
作者: gyue 时间: 2021-10-31 11:46
本帖最后由 gyue 于 2021-10-31 11:47 编辑
回复 4# yakeyun
测试时我用的是手动,PE下用静默参数,静默也只导出需要的硬件信息就行,但是不管格式是否一样,里边的参数信息是一样的。
作者: yakeyun 时间: 2021-10-31 13:43
本帖最后由 yakeyun 于 2021-10-31 13:51 编辑
回复 5# gyue
只获取了一部分,没办法做到对应,并一起输出。只能大佬出手,如果是易语言就好处理。
网络部分需要名称后面直接接MAC,例如:
网络适配器 Microsoft Wi-Fi Direct Virtual Adapter #2 硬件地址(MAC) AA-6D-AA-72-7D-EC)
或
Microsoft Wi-Fi Direct Virtual Adapter #2 AA-6D-AA-72-7D-EC
@echo off
cd /d "%~dp0"
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in ('type "硬件报告.txt" ^|find "OME"') do (
for /f "tokens=1,* delims= " %%b in ('echo %%a ^|find "产品"') do (
echo 产品型号:%%c
)
)
for /f "tokens=1,2 delims=^ " %%d in ('type "硬件报告.txt" ^|findstr "序列号" ') do echo 产品序号:%%e
for /f "tokens=1,* delims=^ " %%f in ('type "硬件报告.txt" ^|findstr /i "网络适配器"') do (
for /f "tokens=*" %%h in ('echo %%g ^|findstr "Bluetooth"') do echo %%h
for /f "tokens=*" %%h in ('echo %%g ^|findstr "Intel"') do echo %%h
for /f "tokens=*" %%h in ('echo %%g ^|findstr "Wi-Fi"') do echo %%h
)
for /f "tokens=*" %%j in ('type "硬件报告.txt" ^|findstr /i "硬件地址(MAC)" ^|more +0') do echo %%j
pause>nul
作者: gyue 时间: 2021-10-31 15:01
回复 6# yakeyun
你已经很厉害了,我之前用findstr都做不到你这样的
作者: gyue 时间: 2021-10-31 15:59
回复 7# gyue
上传不了图片本来说P个想要的结果图:只能写一下了,最终希望想输出的格式文本是以下形式的,不需要虚拟网卡
系统
产品型号:OMEN by HP Laptop 15-dc0xxx
序列号:5CD9156836
ATA
型号 ID: INTEL SSDPEKKF256G8L
序列号 : BTHH83940JXM256B
型号 ID: ST2000LM007-1R8176
序列号 : WDZV90NM
网络
网络适配器: Realtek Gaming GbE Family Controller
接口类型 : Ethernet
硬件地址(MAC) : C4-65-16-AC-A7-11
网络适配器: Intel(R) Wireless-AC 9560 160MHz
接口类型 : 802.11 Wireless Ethernet
硬件地址(MAC): A8-6D-AA-72-7D-EC
作者: Batcher 时间: 2021-11-1 10:09
回复 8# gyue
请把3楼、8楼的内容更新到顶楼作为完整需求的一部分,以便他人查看。
作者: gyue 时间: 2021-11-1 20:07
回复 9# Batcher
已更新谢谢提醒
作者: yakeyun 时间: 2021-11-1 20:48
回复 1# gyue
这个检测是只针对笔记本还是台式机也有,如果只针对笔记本,且序列号位数固定就好提取序列号。
网卡和硬盘最好也统一下,看看具体有哪几个型号。一般品牌机硬盘和网卡都是固定的款。
作者: idwma 时间: 2021-11-1 22:34
- @echo off
- setlocal enabledelayedexpansion
- set "ata=ATA ]---------------------------------------------------------------------------------------------------------"
- set "net=Windows 网络 ]------------------------------------------------------------------------------------------------"
- for /f "tokens=1*" %%i in (硬件报告.txt) do (
- if defined f (
- if defined ff (
- if "%%i"=="产品" (
- echo 系统&echo 产品型号:%%j
- ) else if "%%i"=="序列号" (
- echo 序列号:%%j
- set f=
- set ff=&echo;
- ) else if "%%i"=="网络适配器" (
- set /a n+=1
- call;set #!n!=%%#!n!%%@%%j
- ) else if "%%i"=="接口类型" (
- call;set #!n!=%%#!n!%%@%%j
- ) else if "%%i"=="硬件地址(MAC)" (
- call;set #!n!=%%#!n!%%@%%j
- )
- )
- if "%%i"=="系统:" (set ff=1) else if "%%i"=="网络适配器信息:" (set ff=1)
- )
- if defined fff (
- if "%%i"=="[" (
- for /f "tokens=1,2 delims=()" %%a in ("%%j") do (
- echo 型号 ID:%%a
- echo 序列号 :%%b
- echo;
- )
- )
- )
- if "%%j"=="系统 ]" (set f=1) else if "%%j"=="%ata%" (set fff=1&echo ATA) else if "%%i"=="--------[" (set fff=)
- if "%%j"=="%net%" (set f=1&echo 网络)
- )
- for /f "tokens=2,3,4 delims=@=" %%i in ('set #') do (
- echo %%i|findstr /i "microsoft vmware Bluetooth" >nul||(
- echo 网络适配器:%%i
- echo 接口类型 :%%j
- echo 硬件地址^(MAC^) :%%k
- echo;
- )
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2021-11-2 09:58
本帖最后由 qixiaobin0715 于 2021-11-2 11:07 编辑
回复 1# gyue
更直接一些:- @echo off
- for /f "tokens=1,2*" %%a in (硬件报告.txt) do (
- if "%%a"=="系统:" (
- echo,系统
- set n=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器信息:" (
- echo,
- echo,网络
- set n=0
- ) else if defined n (
- if "%%a"=="产品" (
- echo,产品型号:%%b %%c
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else if "%%a"=="网络适配器" (
- echo,%%a:%%b %%c
- ) else if "%%a"=="接口类型" (
- echo,%%a:%%b %%c
- ) else if "%%a"=="序列号" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- )
- )
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2021-11-2 12:59
修正一下13楼代码,排除虚拟网卡信息:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2*" %%a in (硬件报告.txt) do (
- if "%%a"=="系统:" (
- echo,系统
- set n=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器信息:" (
- set n=0
- ) else if defined n (
- if "%%a"=="产品" (
- echo,产品型号:%%b %%c
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else if "%%a"=="网络适配器" (
- set str=%%c
- set str=!str:Virtual=!
- set str=!str:Bluetooth=!
- if not "!str!"=="%%c" set n=
- if "%%b"=="Bluetooth" set n=
- if defined n (
- echo,
- echo,网络
- echo,%%a:%%b %%c
- )
- ) else if "%%a"=="接口类型" (
- echo,%%a:%%b %%c
- ) else if "%%a"=="序列号" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- )
- )
- )
- pause
复制代码
作者: gyue 时间: 2021-11-2 18:38
回复 14# qixiaobin0715
非常非常感谢,效果很理想
作者: gyue 时间: 2021-11-2 18:39
回复 12# idwma
好的谢谢朋友,我测试一下
作者: qixiaobin0715 时间: 2021-11-3 15:22
回复 15# gyue
你要增加内存的什么信息。我可以试试。
作者: gyue 时间: 2021-11-3 19:13
本帖最后由 gyue 于 2021-11-3 19:19 编辑
回复 17# qixiaobin0715
您好我更新了一下文本,加入了内存信息,您帮忙看看可否添加相关参数,如果可以将配置参数输出文本到桌面,谢谢
作者: qixiaobin0715 时间: 2021-11-3 21:19
本帖最后由 qixiaobin0715 于 2021-11-3 21:23 编辑
回复 18# gyue
要输出文本到桌面,请将14楼代码for的前面加上一个英文左括号,代码39行修改为:- ))>"%HomePath%\DeskTop\New_硬件报告.txt"
复制代码
即可。
在3~4行之间增加以下代码:- if "%%a"=="内存设备:" (
- echo,
- echo,内存
- set m=0
- ) else if defined m (
- echo,%%a|findstr /xr "类型 大小 最大时钟频率 制造商 序列号 部件号">nul 2>nul&&echo,%%a:%%b
- if "%%a"=="部件号" set m=
- )
复制代码
以上未经测试,请自行测试。
作者: gyue 时间: 2021-11-3 21:48
本帖最后由 gyue 于 2021-11-3 21:52 编辑
回复 19# qixiaobin0715
3-4行增加命令没问题了,
39行增加))>"%HomePath%\DeskTop\New_硬件报告.txt"
提示))不是内部命令,或者不输出
作者: qixiaobin0715 时间: 2021-11-3 22:13
回复 20# gyue
你应当没有理解我的意思,好吧,给你一个完整代码:- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1,2*" %%a in (硬件报告.txt) do (
- if "%%a"=="内存设备:" (
- echo,
- echo,内存
- set m=0
- ) else if defined m (
- echo,%%a|findstr /xr "类型 大小 最大时钟频率 制造商 序列号 部件号">nul 2>nul&&echo,%%a:%%b
- if "%%a"=="部件号" set m=
- )
- if "%%a"=="系统:" (
- echo,系统
- set n=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器信息:" (
- set n=0
- ) else if defined n (
- if "%%a"=="产品" (
- echo,产品型号:%%b %%c
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else if "%%a"=="网络适配器" (
- set str=%%c
- set str=!str:Virtual=!
- set str=!str:Bluetooth=!
- if not "!str!"=="%%c" set n=
- if "%%b"=="Bluetooth" set n=
- if defined n (
- echo,
- echo,网络
- echo,%%a:%%b %%c
- )
- ) else if "%%a"=="接口类型" (
- echo,%%a:%%b %%c
- ) else if "%%a"=="序列号" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- )
- )
- ))>"%HomePath%\DeskTop\New_硬件报告.txt"
- pause
复制代码
实际上上面增加的代码效率不高,运行时可能会有停顿的现象,因为在for循环里面使用了管道及组合命令。抽空给你再修改一下。
作者: gyue 时间: 2021-11-3 22:20
回复 21# qixiaobin0715
哦哦。用新代码可以输出了,谢谢。
作者: qixiaobin0715 时间: 2021-11-4 11:55
去掉了代码中的管道及组合命令,重新调整了判断逻辑,将类似项目放在同一个判断语句中,如果全部单独判断(你给定的关键词较多)代码就会太长,并且影响效率。用到了临时文件,最后结果中:“系统”中多了一行“制造商”信息。- @echo off
- set "var=网络适配器 设备信息: 系统: 内存设备: 类型 大小 最大时钟频率 制造商 序列号 部件号 硬件地址 型号 产品"
- findstr /r "%var%" 硬件报告.txt>a.log
- setlocal enabledelayedexpansion
- (for /f "tokens=1,2*" %%a in ('findstr /r /v "Virtual Bluetooth 类型详情" a.log') do (
- if "%%a"=="内存设备:" (
- echo,
- echo,内存
- set m=0
- set n=0
- ) else if "%%a"=="系统:" (
- echo,系统
- set n=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器" (
- echo,
- echo,网络
- echo,%%a:%%b %%c
- set n=0
- ) else if defined n (
- if "%%a"=="序列号" (
- echo,%%a:%%b
- if not defined m set n=
- ) else if "%%a"=="部件号" (
- echo,%%a:%%b
- set m=
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else (
- if "%%c"=="" (echo,%%a:%%b) else echo,%%a:%%b %%c
- )
- )
- ))>"%HomePath%\DeskTop\New_硬件报告.txt"
- del a.log
- pause
复制代码
作者: qixiaobin0715 时间: 2021-11-4 15:30
修正了21楼大小和频率中只有数值没有单位的缺陷。
实际上不使用变量延迟也行,即删除上面代码第4行,结果是一样的。
“系统”中多了一行“制造商”信息的问题实际上也能解决,就是要增加判断。
作者: gyue 时间: 2021-11-4 21:42
回复 24# qixiaobin0715
OK谢谢大神,主要就是为了记录这些数值,一个一个抄太麻烦了,多亏您的帮助,谢谢。
作者: qixiaobin0715 时间: 2021-11-5 10:27
本帖最后由 qixiaobin0715 于 2021-11-5 11:06 编辑
完全按照楼主要求的信息输出:- @echo off
- set "var=网络适配器 设备信息: 系统: 内存设备: 类型 大小 最大时钟频率 制造商 序列号 部件号 硬件地址 型号 产品"
- findstr /r "%var%" 硬件报告.txt>a.log
- (for /f "tokens=1,2*" %%a in ('findstr /r /v "Virtual Bluetooth 类型详情" a.log') do (
- if "%%a"=="内存设备:" (
- echo,
- echo,内存
- set m=0
- set n=0
- ) else if "%%a"=="系统:" (
- echo,系统
- set n=0
- set l=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器" (
- echo,
- echo,网络
- echo,%%a:%%b %%c
- set n=0
- ) else if defined n (
- if "%%a"=="序列号" (
- echo,%%a:%%b
- if not defined m set n=
- ) else if "%%a"=="部件号" (
- echo,%%a:%%b
- set m=
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else if "%%a"=="制造商" (
- if defined l (set l=) else (if "%%c"=="" (echo,%%a:%%b) else echo,%%a:%%b %%c)
- ) else (
- if "%%c"=="" (echo,%%a:%%b) else echo,%%a:%%b %%c
- )
- )
- ))>"%HomePath%\DeskTop\New_硬件报告.txt"
- del a.log
- pause
复制代码
作者: gyue 时间: 2021-11-5 17:06
回复 26# qixiaobin0715
谢谢大神,上一版也可以了。
作者: qixiaobin0715 时间: 2021-11-8 09:04
插槽:2
中数据是从141行取值的,是吗?
作者: gyue 时间: 2021-11-8 10:21
回复 28# qixiaobin0715
您好在内存阵列里的有个内存设备2.就是槽位,
作者: qixiaobin0715 时间: 2021-11-8 12:35
本帖最后由 qixiaobin0715 于 2021-11-8 16:42 编辑
- @echo off
- set "var=处理器: PCI/AGP 内存阵列: 网络适配器 设备信息: 系统: 类型 大小 最大时钟频率 制造商 序列号 部件号 硬件地址 型号 产品 最大内存容量 内存设备 设备描述 版本 显示适配器"
- findstr /i /r /v /c:"类型[^ ]" /c:"[^ ]版本" /c:"DAC" ret.txt>b.log
- findstr /r "%var%" b.log>a.log
- (for /f "tokens=1,2*" %%a in ('findstr /r /v "Virtual Bluetooth 芯片类型" a.log') do (
- if "%%a"=="内存设备:" (
- echo,
- echo,内存
- set m=0
- set n=0
- ) else if "%%a"=="系统:" (
- echo,系统
- set n=0
- ) else if "%%b"=="设备信息:" (
- echo,
- echo,ATA
- set n=0
- ) else if "%%a"=="网络适配器" (
- echo,
- echo,网络
- echo,%%a:%%b %%c
- set n=0
- ) else if "%%a"=="内存阵列:" (
- echo,
- echo,%%a
- set n=0
- ) else if "%%a"=="显示适配器:" (
- echo,
- echo,%%a
- set n=0
- ) else if "%%b"=="PCI/AGP" (
- echo,
- echo,%%b
- set n=0
- ) else if "%%a"=="处理器:" (
- echo,
- echo,%%a
- set n=0
- ) else if defined n (
- if "%%a"=="序列号" (
- echo,%%a:%%b
- if not defined m set n=
- ) else if "%%a"=="部件号" (
- echo,%%a:%%b
- set m=
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="内存设备" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="显存大小" (
- echo,%%a:%%b %%c
- set n=
- ) else if "%%a"=="版本" (
- echo,%%a:%%b %%c
- set n=
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else (
- if "%%c"=="" (echo,%%a:%%b) else echo,%%a:%%b %%c
- )
- )
- ))>"%HomePath%\DeskTop\New_ret.txt"
- del a.log
- del b.log
- pause
复制代码
作者: qixiaobin0715 时间: 2021-11-8 12:52
PCI/AGP中数据不好处理,有差异,请手动将冒号修改为空格。
作者: qixiaobin0715 时间: 2021-11-8 14:07
回复 29# gyue
现在应当可以了,请测试。
作者: gyue 时间: 2021-11-8 14:11
回复 32# qixiaobin0715
好,晚上我测试一下回复你谢谢
作者: gyue 时间: 2021-11-8 21:44
回复 32# qixiaobin0715
谢谢大神,可以了
作者: gyue 时间: 2021-11-9 16:47
回复 32# qixiaobin0715
老大发现个问题,就是内存跟硬盘都显示序列号,唯独系统那块不显示
只显示制造商,产品,版本
作者: qixiaobin0715 时间: 2021-11-9 16:54
我测试的结果:- 系统
- 制造商:HP
- 产品:OMEN by HP Laptop 15-dc0xxx
- 序列号:5CD9156840
-
- 处理器:
- 制造商:Intel(R) Corporation
- 版本:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
-
- 内存阵列:
- 最大内存容量:32 GB
- 内存设备:2
-
- 内存
- 类型:DDR4
- 大小:8 GB
- 最大时钟频率:2667 MT/s
- 制造商:Samsung
- 序列号:310623C4
- 部件号:M471A1K43CB1-CTD
-
- 内存
- 类型:DDR4
- 大小:8 GB
- 最大时钟频率:2667 MT/s
- 制造商:Samsung
- 序列号:41E1ECAD
- 部件号:M471A1K43CB1-CTD
-
- 显示适配器:
- 设备描述:GeForce GTX 1050 Ti
- 显存大小:4 GB
-
- 显示适配器:
- 设备描述:GeForce GTX 1050 Ti
- 显存大小:4 GB
-
- 显示适配器:
- 设备描述:GeForce GTX 1050 Ti
- 显存大小:4 GB
-
- 显示适配器:
- 设备描述:GeForce GTX 1050 Ti
- 显存大小:4 GB
-
- 显示适配器:
- 设备描述:Intel(R) UHD Graphics 630
- 显存大小:1 GB
-
- 显示适配器:
- 设备描述:Intel(R) UHD Graphics 630
- 显存大小:1 GB
-
- 显示适配器:
- 设备描述:Intel(R) UHD Graphics 630
- 显存大小:1 GB
-
- PCI/AGP
- Intel:UHD Graphics 630 显示适配器
-
- ATA
- 型号 ID:INTEL SSDPEKKF256G8L
- 序列号:BTHH83940JXM256B
-
- ATA
- 型号 ID:ST2000LM007-1R8174
- 序列号:WDZV90NZ
-
- 网络
- 网络适配器:Intel(R) Wireless-AC 9560 160MHz
- 接口类型:802.11 Wireless Ethernet
- 硬件地址(MAC):A8-6D-AA-72-7D-EC
-
- 网络
- 网络适配器:Realtek Gaming GbE Family Controller
- 接口类型:Ethernet
- 硬件地址(MAC):C4-65-16-AC-A7-11
- 请按任意键继续. . .
复制代码
作者: qixiaobin0715 时间: 2021-11-9 16:55
回复 35# gyue
你把测试出现问题的文本发给我看看。
作者: gyue 时间: 2021-11-9 17:02
本帖最后由 gyue 于 2021-11-9 21:45 编辑
回复 37# qixiaobin0715 [/b
上传网盘了, 链接:https://pan.baidu.com/s/1Xs9sIm8hiz6pGaKBRkuCSw
提取码:xr1n 还有显卡 跟PCI/AGP能否在网卡后边,也就是最后显示?,双显卡会显示好几条
同样的信息,
作者: qixiaobin0715 时间: 2021-11-9 21:22
回复 38# gyue
请不要压缩,我这里.7z压缩文件没装软件,无法解压。
作者: gyue 时间: 2021-11-9 21:45
回复 39# qixiaobin0715
38楼已更新链接未压缩
作者: qixiaobin0715 时间: 2021-11-9 22:35
本帖最后由 qixiaobin0715 于 2021-11-10 09:40 编辑
回复 40# gyue
显卡信息重复是因为源文本中本身就有重复信息存在:- @echo off
- set "var=处理器: PCI/AGP 内存阵列: 网络适配器 设备信息: 系统: 类型 大小 最大时钟频率 制造商 序列号 部件号 硬件地址 型号 产品 最大内存容量 内存设备 设备描述 版本 显示适配器"
- findstr /i /r /v /c:"类型[^ ]" /c:"[^ ]版本" /c:"DAC" 硬件报告.txt>b.log
- findstr /r "%var%" b.log>a.log
- (for /f "tokens=1,2*" %%a in ('findstr /r /v "Virtual Bluetooth 芯片类型" a.log') do (
- if "%%a"=="内存设备:" (
- echo,@内存
- set m=0
- set n=0
- ) else if "%%a"=="系统:" (
- echo,系统
- set n=0
- set l=0
- ) else if "%%b"=="设备信息:" (
- echo,@ATA
- set n=0
- ) else if "%%a"=="网络适配器" (
- echo,@网络
- echo,%%a:%%b %%c
- set n=0
- ) else if "%%a"=="内存阵列:" (
- echo,@%%a
- set n=0
- ) else if "%%a"=="显示适配器:" (
- echo,@%%a
- set n=0
- ) else if "%%b"=="PCI/AGP" (
- echo,@%%b
- set n=0
- ) else if "%%a"=="处理器:" (
- echo,@%%a
- set n=0
- ) else if defined n (
- if "%%a"=="序列号" (
- echo,%%a:%%b
- if not defined m set n=&set l=
- ) else if "%%a"=="部件号" (
- echo,%%a:%%b
- set l=
- set m=
- set n=
- ) else if "%%a"=="硬件地址(MAC)" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="内存设备" (
- echo,%%a:%%b
- set n=
- ) else if "%%a"=="显存大小" (
- echo,%%a:%%b %%c
- set n=
- ) else if "%%a"=="版本" (
- if not defined l echo,%%a:%%b %%c&set n=
- ) else if "%%a"=="制造商" (
- if not defined l echo,%%a:%%b %%c
- ) else if "%%a"=="型号" (
- echo,%%a %%b:%%c
- ) else (
- if "%%c"=="" (echo,%%a:%%b) else echo,%%a:%%b %%c
- )
- )
- ))>c.log
- set str="显示适配器 ^设备描述 ^显存大小 ^@PCI/AGP"
- setlocal enabledelayedexpansion
- (for /f "delims=" %%x in ('findstr /r /v %str% c.log') do (
- set "str1=%%x"
- if "!str1:~,1!"=="@" (
- echo,
- echo,!str1:~1!
- ) else echo,%%x
- )
- for /f "delims=" %%y in ('findstr /r %str% c.log') do (
- set "str2=%%y"
- if "!str2:~,1!"=="@" (
- echo,
- echo,!str2:~1!
- ) else echo,%%y
- ))>"%HomePath%\DeskTop\New_硬件报告.txt"
- del a.log
- del b.log
- del c.log
- pause
复制代码
最终版不再更新,有问题请自行修改。
作者: gyue 时间: 2021-11-10 06:28
回复 41# qixiaobin0715
谢谢,回头我试试,麻烦你了
作者: qixiaobin0715 时间: 2021-11-10 09:43
41楼代码刚刚修改完成,太过牵涉精力,就这样了。
作者: gyue 时间: 2021-11-10 10:00
回复 43# qixiaobin0715
不用再改了,已经很麻烦你了,非常感谢 此贴问题可以标注已解决了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |