You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本提取diskpart中Volume容量与可用空间两行输出的问题

解决批处理提取diskpart指定行的问题

直接提取目标行的最简方案

如果你只需要输出包含Volume Capacity和Volume Free Space的两行,不需要复杂的行数计算,直接让findstr精确匹配这两个字符串即可:

@echo off
setlocal
(
    echo sel vol c
    echo detail vol
    echo exit
) | diskpart.exe | findstr /c:"Volume Capacity" /c:"Volume Free Space"
endlocal

原脚本的问题分析

你之前的脚本逻辑存在错误:

  • for /F %%e IN ('...findstr "Volume"') 会逐行读取findstr的输出,但默认按空格/制表符拆分内容,将每行的第一个元素(比如Volume)赋值给%%e,而非统计行数。
  • set /a lines=%%e 试图将字符串转成数字计算,会直接报错,导致lines变量无法正确赋值,后续的startLine计算自然也无效。

可选:将结果保存到变量(如需后续处理)

如果需要把这两行内容存到变量里供后续使用,可以用带延迟扩展的for /F循环:

@echo off
setlocal enabledelayedexpansion
set "volCapacity="
set "volFreeSpace="

for /F "tokens=*" %%a IN ('(echo sel vol c^&echo detail vol^&echo exit^) ^| diskpart.exe') do (
    rem 跳过空行
    if "%%a"=="" goto :nextLine
    rem 匹配容量行
    echo %%a | findstr /c:"Volume Capacity" >nul && set "volCapacity=%%a"
    rem 匹配可用空间行
    echo %%a | findstr /c:"Volume Free Space" >nul && set "volFreeSpace=%%a"
    :nextLine
)

echo 磁盘容量:!volCapacity!
echo 可用空间:!volFreeSpace!
endlocal

内容的提问来源于stack exchange,提问作者SmplJohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:50:01