Parsing 如何从命令结果结尾转义空行

Parsing 如何从命令结果结尾转义空行,parsing,batch-file,for-loop,cmd,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% ) 但结果什么都没有,因为在WMICCPU get name命令结果和remove created变量的末尾有一些空行

我使用以下命令从我的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%
)
但结果什么都没有,因为在WMICCPU get name命令结果和remove created变量的末尾有一些空行

我怎样才能解决它? 非常感谢

请搜索延迟的扩展

应向您显示所需的数据。这是几个有充分证明的解决方案之一。

请搜索延迟扩展


应向您显示所需的数据。这是几个有很好文档记录的解决方案之一。

在您的案例中,不需要在for循环中回显结果,因为您只设置了一个名称。稍后再回应

@回音 对于“WMIC CPU获取名称”中的/F Skip=1 Delims=%%A %A Do-Set-CPU\u-NAME=%%B中的Do-For/F-Delims=%%B Echo=%CPU\u名称%
第二个For循环用于删除您报告的不需要的“空行”。

在您的案例中,不需要在For循环中回显结果,因为您只设置了一个名称。稍后再回应

@回音 对于“WMIC CPU获取名称”中的/F Skip=1 Delims=%%A %A Do-Set-CPU\u-NAME=%%B中的Do-For/F-Delims=%%B Echo=%CPU\u名称% 第二个For循环用于删除您报告的不需要的“空行”。

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
进一步阅读 -一个很好的参考所有的东西Windows命令行相关。 -延迟扩展将导致变量在执行时而不是在解析时扩展。 -在文件中搜索字符串。 -Windows管理检测命令。 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
进一步阅读 -一个很好的参考所有的东西Windows命令行相关。 -延迟扩展将导致变量在执行时而不是在解析时扩展。 -在文件中搜索字符串。 -Windows管理检测命令。
非常感谢大卫,这才是我真正想要的,你的伟大!非常感谢大卫,这才是我真正想要的,你的伟大!