批处理脚本中的 WMIC 输出
WMIC output in a batch script
这很简单,但经过大量谷歌搜索和试验后,我找不到答案。
我将以此为例,然后将其应用到我正在编写的其他脚本中。
当我运行这个命令
wmic cpu get name > C:\Temp\PCINFO_TEMp\core.txt
我明白了:
姓名
英特尔(R) 酷睿(TM) i5-10310U CPU @ 1.70GHz
有没有办法在不获取名称的情况下获取英特尔信息?
我试过 Findstr 并找到它,但它不起作用。
感谢任何帮助
使用带有 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编码输出时出现问题,并且会用两个回车符写入数据returns 和文本文件中的换行符,而不是回车 return + 换行符。通过使用两个 FOR /F 循环可以避免这种错误的线路终止问题。
要了解使用的命令及其工作原理,请打开 command prompt window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
setlocal /?
wmic /?
wmic cpu /?
wmic cpu get /?
这很简单,但经过大量谷歌搜索和试验后,我找不到答案。 我将以此为例,然后将其应用到我正在编写的其他脚本中。 当我运行这个命令
wmic cpu get name > C:\Temp\PCINFO_TEMp\core.txt
我明白了:
姓名
英特尔(R) 酷睿(TM) i5-10310U CPU @ 1.70GHz
有没有办法在不获取名称的情况下获取英特尔信息? 我试过 Findstr 并找到它,但它不起作用。
感谢任何帮助
使用带有 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编码输出时出现问题,并且会用两个回车符写入数据returns 和文本文件中的换行符,而不是回车 return + 换行符。通过使用两个 FOR /F 循环可以避免这种错误的线路终止问题。
要了解使用的命令及其工作原理,请打开 command prompt window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
setlocal /?
wmic /?
wmic cpu /?
wmic cpu get /?