批处理文件将wmi输出设置为变量

时间:2013-11-26 14:16:49

标签: windows batch-file

你好我第一次使用BATCH脚本,我得到的硬盘大小如下:

wmic diskdrive get size

哪个工作正常,但我想将此值存储到变量中供以后使用,例如使用ECHO显示值。

我不确定如何将上述命令的输出设置为变量。我跟着去了:

SET hddbytes=wmic diskdrive get size

但这只是将变量设置为上面的文本字符串而不是输出。

4 个答案:

答案 0 :(得分:10)

用于批处理文件。从命令行,将%%替换为%

for /f "tokens=*" %%f in ('wmic diskdrive get size /value ^| find "="') do set "%%f"
echo %size%

或者,如果你想使用首选变量

for /f "tokens=2 delims==" %%f in ('wmic diskdrive get size /value ^| find "="') do set "myVar=%%f"
echo %myVar%

答案 1 :(得分:1)

你想:

for /f %%a in ('wmic diskdrive get size^|findstr [0-9]') do echo %%a

答案 2 :(得分:1)

已更新:

  1. 在某些环境中,WMIC的输出可能会得到尾随的回车

    Size        <CR>
    <CR><LF>
    256052966400<CR>
    <CR><LF>
    500105249280<CR>
    <CR><LF>
    15496427520 <CR>
    <CR><LF>
    
  2. 使用csv格式,并使用FOR循环截断wmic输出中的所需值:

    For /F "tokens=2,3 delims=," %%a in ('"wmic diskdrive get size,Status 
    /format:csv |findstr "[0-9]" "') do (
    echo "%%a"
    )
    

另一个批处理脚本示例:

setlocal ENABLEDELAYEDEXPANSION
:: You can change active code page as well::
@chcp 936 >NUL

:: [example] Remove all network printers:
for /F "tokens=2,3 delims=," %%a in ('"wmic printer where 'local=FALSE' get Name,PrinterStatus /format:csv |findstr "." "') do (
    echo "%%a"
    rundll32 printui.dll,PrintUIEntry /n "%%a" /dn /q
)

答案 3 :(得分:0)

for /f "delims="  %%w in ('wmic diskdrive get size /format:Textvaluelist.xsl') do for /f "usebackq delims=" %%a in ('%%w') do set %%a
echo %size%