你好我第一次使用BATCH脚本,我得到的硬盘大小如下:
wmic diskdrive get size
哪个工作正常,但我想将此值存储到变量中供以后使用,例如使用ECHO显示值。
我不确定如何将上述命令的输出设置为变量。我跟着去了:
SET hddbytes=wmic diskdrive get size
但这只是将变量设置为上面的文本字符串而不是输出。
答案 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)
已更新:
在某些环境中,WMIC的输出可能会得到尾随的回车:
Size <CR>
<CR><LF>
256052966400<CR>
<CR><LF>
500105249280<CR>
<CR><LF>
15496427520 <CR>
<CR><LF>
使用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%