我使用以下命令从我的CPU名称创建一个变量:
@echo off
Rem create variable from cpu name
for /f "useback tokens=* skip=1" %%g in (`wmic cpu get name ^|findstr /i "."`) do (
set CPU_NAME=%%g
echo %CPU_NAME%
)
但结果没什么,因为在#34; wmic cpu get name
"结尾处有一些空行。命令结果并删除创建的变量
我该如何解决? 非常感谢
答案 0 :(得分:4)
请搜索我们delayed expansion
。
call echo %%CPU_NAME%%
应该显示所需的数据。这是几个记录良好的解决方案之一。
答案 1 :(得分:2)
在您的情况下,不需要在for循环中回显结果,因为您只设置一个名称。请稍后再说。
@Echo Off
For /F "Skip=1 Delims=" %%A In ('WMIC CPU Get Name'
) Do For /F "Delims=" %%B In ("%%A") Do Set "CPU_NAME=%%B"
Echo=%CPU_NAME%
第二个For循环旨在删除不需要的空行'你报道了。
答案 2 :(得分:2)
wmic cpu get name
使用findstr如下从wmic输出中去除空行。您还需要使用延迟扩展
更正了批处理文件(test.cmd):
@echo off
setlocal enabledelayedexpansion
Rem create variable from cpu name
for /f "useback tokens=* skip=1" %%g in (`wmic cpu get name ^| findstr /r /v "^$"`) do (
set CPU_NAME=%%g
echo !CPU_NAME!
)
endlocal
使用示例:
> test
Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz