来自 wmic 的批处理文件集变量
Batch file set variable from wmic
目前我正在尝试将内存的速度值放入 var 中,就像这样
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)
它将回显出正确的值。为什么这不将值存储到变量中?
您希望在 for 循环中更改 msp 的值后,在 for 循环外访问它的值。在这种情况下,您可能需要将变量扩展到它们的 运行 时间值而不是解析时间值。试试这个:
setlocal EnableDelayedExpansion
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 ('%__APPDIR__%\wbem\wmic.exe memorychip get speed /value ^|find/v " "')do @set "msp=%~f" && call echo/%msp%
在bat/cmd行:
@echo off && setlocal EnableDelayedExpansion
set "_get_freq_mem=%__APPDIR__%\wbem\wmic.exe memorychip get speed /value"
for /f "tokens=2*delims== " %%f in ('"!_get_freq_mem!^|%__APPDIR__%findstr.exe ."
')do set "_msp=%%f" && call set "_msp=!_msp: =!" && echo/!_msp!
%__APPDIR__%timeout.exe -1 && endlocal & goto :EOF
根据我最近的评论,以下内容旨在 return 您系统中最慢的记忆棒速度。
@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
,没有人可以证明他们的成本!)
目前我正在尝试将内存的速度值放入 var 中,就像这样
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)
它将回显出正确的值。为什么这不将值存储到变量中?
您希望在 for 循环中更改 msp 的值后,在 for 循环外访问它的值。在这种情况下,您可能需要将变量扩展到它们的 运行 时间值而不是解析时间值。试试这个:
setlocal EnableDelayedExpansion
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 ('%__APPDIR__%\wbem\wmic.exe memorychip get speed /value ^|find/v " "')do @set "msp=%~f" && call echo/%msp%
在bat/cmd行:
@echo off && setlocal EnableDelayedExpansion
set "_get_freq_mem=%__APPDIR__%\wbem\wmic.exe memorychip get speed /value"
for /f "tokens=2*delims== " %%f in ('"!_get_freq_mem!^|%__APPDIR__%findstr.exe ."
')do set "_msp=%%f" && call set "_msp=!_msp: =!" && echo/!_msp!
%__APPDIR__%timeout.exe -1 && endlocal & goto :EOF
根据我最近的评论,以下内容旨在 return 您系统中最慢的记忆棒速度。
@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
,没有人可以证明他们的成本!)