如何从命令结尾处转义空行

时间:2017-02-26 06:49:27

标签: parsing batch-file for-loop cmd

我使用以下命令从我的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"结尾处有一些空行。命令结果并删除创建的变量

我该如何解决? 非常感谢

3 个答案:

答案 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

进一步阅读