Итак, вы вложили два цикла for /F
, которые собирают в основном одну и ту же информацию, поэтому вы получаете дубликаты.
А как насчет этого подхода, который использует свойство Index
для заголовка [Device_#]
, а также для предложения where
внутреннего запроса wmic
:
@echo off
set "COUNT=0"
> "DiskDevices.ini" (
for /F "delims=" %%J in ('wmic DiskDrive get Index /VALUE 2^> nul') do (
for /F "tokens=2 delims==" %%I in ("%%J") do (
echo [Device_%%I]
for /F "delims=" %%H in ('wmic DiskDrive where "Index=%%I" get Caption^,Size /VALUE 2^> nul') do (
for /F "delims=" %%G in ("%%H") do (
echo(%%G
)
)
set /A "COUNT+=1"
)
)
echo [Total Devices]
call echo Value=%%COUNT%%
)