如何使用systeminfo筛选指定信息并导出为CSV文件?
问题根源
当你给systeminfo加上/FO CSV参数后,输出的每一行都是带双引号的键值对(例如"OS Name","Microsoft Windows 10 Pro"),但你用findstr匹配的是不带引号的"OS Name"这类字符串,完全匹配不到目标行,所以生成的CSV文件为空。
修复方案
方案1:适配CSV格式的findstr命令
在CMD环境中,双引号需要用两个双引号转义,所以把findstr的匹配字符串改成包含双引号的形式:
SYSTEMINFO /S MyComputerName /FO CSV /NH | findstr /c:"""Host Name""" /c:"""OS Name""" /c:"""OS Version""" /c:"""System Boot Time""" >> sysinfo.csv
这个命令会准确筛选出包含指定键名的CSV行,写入目标文件。
方案2:先筛选再转CSV
如果觉得转义双引号麻烦,可以先获取普通格式的筛选结果,再手动转换为CSV格式:
( echo "Host Name","OS Name","OS Version","System Boot Time" for /f "tokens=1,* delims=:" %%a in ('systeminfo /S MyComputerName ^| findstr /c:"Host Name" /c:"OS Name" /c:"OS Version" /c:"System Boot Time"') do ( set "value=%%b" setlocal enabledelayedexpansion set "value=!value:~1!" echo "%%a","!value!" endlocal ) ) >> sysinfo.csv
该命令会先写入CSV表头,再将筛选后的每一行处理成标准的"键","值"格式。
方案3:用PowerShell更高效(推荐)
PowerShell对系统信息和CSV的支持更友好,命令逻辑更清晰:
Get-WmiObject Win32_OperatingSystem -ComputerName MyComputerName | Select-Object CSName, Caption, Version, LastBootUpTime | Export-Csv -Path "sysinfo.csv" -NoTypeInformation
如果需要提取其他字段,只需在Select-Object后添加对应的属性名称即可。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

