这非常简单,但经过多次谷歌搜索和实验后,我找不到答案。 我将以此作为示例,然后我可以将其应用到我正在编写的其他脚本中。 当我运行这个命令时
wmic cpu get name > C:\Temp\PCINFO_TEMp\core.txt
我明白了:
姓名
英特尔(R) 酷睿(TM) i5-10310U CPU @ 1.70GHz
有没有办法在不获取名称的情况下获取英特尔信息? 我尝试过 Findstr 和 find 但它不起作用。
如有任何帮助,我们将不胜感激
使用带有 BOM(字节顺序标记)的 UTF-16 LE 编码的 WMIC 的 Unicode 输出可以使用两个 FOR 循环进行过滤,以将所需的数据写入 ASCII 编码的文本文件中。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "delims=" %%I in ('%SystemRoot%\System32\wbem\wmic.exe CPU GET Name /VALUE') do for /F "tokens=2 delims==" %%J in ("%%I") do >"C:\Temp\PCINFO_TEMP\core.txt" echo %%~J
endlocal
仅使用一个 FOR 循环,如下所示,实际上并不起作用。
for /F "tokens=2 delims==" %%I in ('%SystemRoot%\System32\wbem\wmic.exe CPU GET Name /VALUE') do >"C:\Temp\PCINFO_TEMP\core.txt" echo %%I
原因是 Windows 命令处理器在处理 WMIC 的 UTF-16 编码输出时存在问题,并且会将带有两个回车符和换行符的数据写入文本文件,而不是仅回车符 + 换行符 -喂养。使用两个 FOR /F 循环可以避免这种错误的线路终止问题。
要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。
echo /?
endlocal /?
for /?
setlocal /?
wmic /?
wmic cpu /?
wmic cpu get /?