日期:2014-05-17  浏览次数:20903 次

谁能解释下这个批处理
@echo off
set vol=E
for /f "tokens=2* delims=:" %%a in ('fsutil volume diskfree %vol%:') do set free=%%a
set free=%free:~0,-6%
echo %free%
if %free% lss 10000 echo 这个逻辑盘空间不足10G

最好能有详细的解释。
批处理

------解决方案--------------------
fsutil volume diskfree e: //列E盘空间,结果给for


delims=: //for取结果,以“:”号分隔
tokens=2* //取第二列以后的所有字符,星号表示剩余的字符。或tokens=2也可

set free=%free:~0,-6% //取变量的所有字符,除了后面的6位


------解决方案--------------------
引用:
1.为什么要以“:”分隔?
2.不加tokens行吗?与加上tokens有什么区别?

回答后马上结贴。谢谢。


1、
你打开CMD窗口,执行命令:
fsutil volume diskfree C:
就会发现结果是以冒号作为分隔符的

2、
不加tokens默认只能取到第一列

@echo off
for /f %%a in ("a b c") do (
    echo %%a
    echo %%b
)


加tokens可以取到你想要的列
@echo off
for /f "tokens=1-2" %%a in ("a b c") do (
    echo %%a
    echo %%b
)