You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Batch脚本格式化输出设备厂商与型号的实现求助

解决Batch脚本输出硬件厂商和型号的格式化问题

修正后的脚本

@echo off
setlocal enabledelayedexpansion

:: 获取厂商名称
set "vendor="
for /f "skip=1 tokens=*" %%i in ('wmic csproduct get vendor') do (
    set "line=%%i"
    :: 去除WMIC输出末尾的多余回车字符
    set "vendor=!line:~0,-1!"
    goto :getVendorDone
)
:getVendorDone
echo Vendor: %vendor%

:: 获取产品型号
set "model="
for /f "skip=1 tokens=*" %%j in ('wmic csproduct get name') do (
    set "line=%%j"
    set "model=!line:~0,-1!"
    goto :getModelDone
)
:getModelDone
echo Name: %model%

pause
endlocal

关键修改说明

  • 跳过表头行:使用skip=1参数让for循环忽略WMIC输出的第一行(也就是Vendor/Name表头),避免把表头内容混入结果。
  • 处理WMIC特殊输出:WMIC命令输出为UTF-16编码,转成ANSI后每行末尾会多出一个无效回车字符,通过!line:~0,-1!截断最后一个字符消除该问题。
  • 提前终止循环:wmic csproduct只会返回一行有效数据(除表头和空行),用goto跳出循环避免无效遍历。

简化写法(利用findstr过滤空行)

@echo off
for /f "skip=1 tokens=*" %%i in ('wmic csproduct get vendor ^| findstr /v "^$"') do echo Vendor: %%i
for /f "skip=1 tokens=*" %%j in ('wmic csproduct get name ^| findstr /v "^$"') do echo Name: %%j
pause

这种写法通过findstr /v "^$"过滤WMIC输出中的空行,配合skip=1跳过表头,同样能得到干净的目标输出。

内容的提问来源于stack exchange,提问作者Peti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:35:04