wmic的批处理文件集变量

问题描述 投票:0回答:3

目前,我正在尝试将内存的速度值转换为类似的变量

for /f "tokens=2 delims==" %%f in ('wmic memorychip get speed /value ^| find "="') do (set msp=%%f)
echo %msp%

但是它永远不会将值传递到变量中。如果我这样做

for /f "tokens=2 delims==" %%f in ('wmic memorychip get speed /value ^| find "="') do (echo %%f)

它将回显正确的值。为什么这不将值存储到变量中?

batch-file wmic
3个回答
1
投票

根据我最近的评论,以下内容旨在返回系统中最低的记忆棒速度。

@Set "MSp=9999"&For /F EOL^=S %%G In (
    '""%__AppDir__%wbem\wmic.exe" MemoryChip Get Speed 2>NUL"')Do @(
    SetLocal EnableDelayedExpansion
    If 1%%G Lss 1!MSp! (EndLocal&Set /A MSp=%%G 2>NUL)Else EndLocal)
@Set MSp&Pause

最后一行是出于演示目的。我将9999用作初始值,因为几年后我们不太可能拥有具有这些速度的记忆棒,(目前,我认为最快的是5000,没有人可以证明其成本!]] >


1
投票

尝试一下:


0
投票

您希望在for循环中更改后,在for循环之外访问msp的值。在这种情况下,您可能需要将变量扩展为它们的运行时值,而不是解析时值。试试这个:

© www.soinside.com 2019 - 2024. All rights reserved.