批处理 - WMIC 命令输出多行添加字符串(计算机名称)

Batch - WMIC Command output multiple lines add string (Computer Name)

我正在尝试为 fixed-disk 制作一个批处理脚本,输出如下:

计算机名、盘符、可用磁盘Space

如果只有一个驱动器,输出可以是一行;如果有多个驱动器,则multiple-lines输出

现在使用以下命令,我得到了计算机的输出,但这没有给出计算机名称。我需要包含计算机名称,因为我将 运行 通过使用 for 循环的脚本针对多台计算机使用它。

wmic /node:"%COMPUTERNAME%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace

使用批处理脚本,我可以输出计算机名称,但它只出现在 disk-space 行上方

echo off
for /f %%i in (computers.txt) do (
echo %%i >>outputfile.txt
wmic /node:"%%i" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace' >>outputfile.txt
)

如果计算机名称是 "COMPUTER1" 并且有 3 个驱动器,这就是

COMPUTER1
DeviceID  FreeSpace
C:        <free space bytes>
D:        <free space bytes>
E:        <free space bytes>

我想要的是:

ComputerName DeviceID FreeSpace
COMPUTER1    C:       <free space bytes>
COMPUTER1    D:       <free space bytes>
COMPUTER1    E:       <free space bytes>

事件列 header 可以被排除。

我相信这可以通过 for 循环来完成,但不确定如何实现。任何人都可以提出建议,将不胜感激。谢谢。

您必须捕获 forwmic 输出,然后您可以对每一行进行后处理:

echo Computername  DeviceID  FreeSpace
for /f "delims=" %%a in ('wmic /node:"%%i" LogicalDisk Where DriveType^="3" Get DeviceID^,FreeSpace ^|find ":"') do @echo %%i  %%a