显示碎片的批处理文件 - 格式化输出

时间:2014-10-24 19:13:40

标签: windows batch-file

defrag C: /A /V > %Temp%\defrag.txt FOR /F "delims=" %%a in ('findstr /C:"Total fragmented space" "%Temp%\defrag.txt" ') do SET "fragmentation=%%a" ECHO %fragmentation%

此代码工作正常,但回显文件中的空格。 这是输出:

--------------------------------------------------------------------- Total C Fragmentation: Total fragmented space = 3%

有没有办法摆脱那些额外的空间?我已经尝试通过添加一直到=符号来更准确地搜索要搜索但没有运气。

感谢大家的帮助,感谢您的时间!

1 个答案:

答案 0 :(得分:0)

您可以将空格用作分隔符并检索分离的元素

FOR /F "tokens=1-8" %%a in (
    'findstr /C:"Total fragmented space" "%Temp%\defrag.txt" '
) do SET "fragmentation=%%a %%b %%c %%d %%e %%f %%g %%h"

或者您可以直接使用等号作为分隔符,获取值并稍后输出您需要的内容

FOR /F "tokens=2 delims==" %%a in (
    'findstr /C:"Total fragmented space" "%Temp%\defrag.txt" '
) do SET "fragmentation=%%a"
echo Total C Fragmentation: Total fragmented space =%fragmentation%

在这两种情况中的任何一种情况下,都可以避免临时文件,因为for命令可以运行命令并检索其输出

FOR /F "tokens=2 delims==" %%a in (
    'defrag C: /A /V ^| findstr /C:"Total fragmented space" '
) do SET "fragmentation=%%a"