[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]请教批处理对于下列返回结果怎样提取数据最准确

需求:获取本机中的显卡相关信息,如多个显卡则取默认取第一行即可,但是此处分辨率在第二行,因此没有采用.../value格式化,那么就带来个问题,用【delims= 】空格拆分时可能会导致意外的结果【如:显卡名称本身含有空格】
在不用.../value格式情况下如何正确提取5列的值【显卡内存、显卡名称、显卡版本、水平分辨率、垂直分辨率】

本机的查询返回结果列表(数据可能没对齐):
  1. D:\work_related\Tools\Batch>wmic path Win32_VideoController get Name,AdapterRAM,DriverVersion,CurrentHorizontalResolution,CurrentVerticalResolution
  2. AdapterRAM  CurrentHorizontalResolution  CurrentVerticalResolution  DriverVersion   Name
  3. 2147483648                                                          27.21.14.5709   NVIDIA GeForce 940MX
  4. 1073741824  1920                         1080                       27.20.100.8853  Intel(R) HD Graphics 630
复制代码
最终得到的值:
set Name=显卡名称
set AdapterRAM=显卡内存
set DriverVersion=显卡版本
set CurrentHorizontalResolution=水平分辨率
set CurrentVerticalResolution=垂直分辨率

示例代码:
  1. for /f "skip=1 tokens=1-5 delims= " %%a in ('wmic path Win32_VideoController get Name^,AdapterRAM^,DriverVersion^,CurrentHorizontalResolution^,CurrentVerticalResolution') do (
  2.    
  3.    
  4. )
复制代码

回复 4# yakeyun


根据测试得到的结果是:
  1. 显存容量:2147483648
  2. 系统分辨率:27.21.14.5709*NVIDIA
  3. 显卡版本:GeForce
  4. 卡名称:940MX
复制代码

TOP

本帖最后由 xiaolijian916 于 2021-7-21 16:03 编辑
回复  xiaolijian916
未测试
qixiaobin0715 发表于 2021-7-21 11:24



    测试结果正确的,但有个问题,取自格式写死了,其他机器的显卡名称空格不一定是两个或三个(其他4列应该是固定格式)。我的思路是将最后一列单独拿出来做处理。
  1. NVIDIA GeForce 940MX
  2. 2147483648
  3. 27.21.14.5709
  4. 1920
  5. 1080
  6. 请按任意键继续. . .
复制代码

TOP

只有第五列包含空格的话
newswan 发表于 2021-7-21 11:32



    测试结果:
  1. Name
  2. 940MX
  3. Intel(R) HD Graphics 630
  4. 请按任意键继续. . .
复制代码

TOP

回复 9# idwma


    这个不错,按照,拆分提取即可。

TOP

回复 10# newswan


    一个语句块执行两遍要被骂

TOP

返回列表