2

我有一个批处理脚本,它创建一些数组,以便在分区中存储一些关于磁盘空间的 WMI 数据,然后我想循环遍历这些数据。我试图利用延迟扩展的方式似乎存在一些问题。

首先,我为分区名称、可用空间和总空间创建了 3 个数组,如下所示:

SET i=0
SET j=0
SET k=0
FOR /F "tokens=1,2 delims== usebackq" %%A IN (`WMIC %remoteaccess% Path Win32_PerfRawData_PerfDisk_LogicalDisk Get Name^,FreeMegabytes^,PercentFreeSpace_Base /VALUE`) DO (
    IF /I %%A EQU Name                   SET "names[!i!]=%%B"
    IF /I %%A EQU Name                   SET /a i=i+1

    IF /I %%A EQU FreeMegabytes          SET "dfm[!j!]=%%B"
    IF /I %%A EQU FreeMegabytes          SET /a j=j+1

    IF /I %%A EQU PercentFreeSpace_Base  SET "dfb[!k!]=%%B"
    IF /I %%A EQU PercentFreeSpace_Base  SET /a k=k+1
)

这工作正常。但后来我尝试将其显示为 XML,使用循环遍历每个(%calcaddress%是指向计算器批处理文件的链接):

SET l=0
FOR /F "tokens=2 delims==" %%s in ('set names[') DO (       
ECHO    ^<result^>
ECHO        <title>%%s Disk Free^<title>
FOR /F "tokens=* usebackq" %%A IN (`"%calcaddress% round0 !dfm[%l%]!*1024*1024"`) DO ECHO        ^<Value^>%%A^</Value^>
ECHO    ^</result^>
SET /a l=l+1
)

问题在于, 的值%l%似乎总是0在每次迭代中,所以它不起作用。我尝试将其更改为!dfm[!l!]!可能所有变体,但我无法正常工作。我也有ECHO offSETLOCAL EnableDelayedExpansion在文件的顶部。

4

0 回答 0