【问题标题】:batch file for cpu query using for /F loop使用 for /F 循环进行 CPU 查询的批处理文件
【发布时间】:2018-09-05 20:24:41
【问题描述】:

需要帮助。

我正在尝试在批处理文件上运行以下命令以确定机器是 Intel 还是 AMD...

for /F "skip=1 tokens=1" %%i in ('wmic cpu get name') do set chip=%%i

如果 "%chip%" == "Intel(R)" 转到 Intel,否则转到 AMD

:Intel echo this is an Intel machine

:AMD echo 这是一台AMD机器

但我遇到了一个问题。输出如下:

for /F "skip=1 tokens=1" %i in ('wmic cpu get name') do set chip=%i

设置芯片=英特尔(R)

设置芯片=

它显示了第二个芯片“组”,基本上清除了第一个结果。

我需要输入什么才能在第一次响应后停止循环?

【问题讨论】:

  • 也许findstr更容易

标签: for-loop cmd wmic


【解决方案1】:

设置第一行后,使用 GOTO 退出循环。

@ECHO OFF
FOR /F "skip=1 tokens=1" %%i IN ('wmic cpu get name') DO (
    SET "chip=%%i"
    GOTO AfterTest
)

:AfterTest

IF "%chip%" == "Intel(R)" (GOTO Intel) ELSE (GOTO AMD)

:Intel
echo this is an Intel machine
ECHO This is Intel.
GOTO AfterAll

:AMD
echo this is an AMD machine
ECHO This is not Intel.
GOTO AfterAll

:AfterAll

获取处理器名称的另一种方法。

@ECHO OFF
FOR /F "delims=" %%p IN ('powershell -NoProfile -Command ^(Get-CimInstance -ClassName CIM_Processor^).Name.Split^(' '^)[0]') DO (
    SET "chip=%%p"
)
ECHO %chip%

【讨论】:

  • 天啊,非常感谢。我整天都被这件事弄得头昏脑胀。顺便说一句...我对其进行了测试,为了让 GOTO 工作,我必须将它们放在 () 中。但是非常感谢!!!!!!
猜你喜欢
  • 2023-03-27
  • 2013-10-07
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多