0

我正在使用下面的代码来获取驱动器名称、可用空间和驱动器总空间。

my @pnames = `wmic /node:"IP" /user:"UserName" /password:"password" LogicalDisk Where "DeviceID='H:'" Get DeviceID,FreeSpace,Size`;

print "@pnames";

上面的命令显示输出如下:

DeviceID FreeSpace    Size

H:        51664236544  214753832960

我怎样才能读DeviceID$DriveName变量,FreeSpace变量$FreeSpaceOnDriveSize变量$TotalSpace

提前致谢。

4

2 回答 2

1

最好用它split来获取这些值。

我不清楚你的输出中的标题后面是否真的有一个空行,但如果是这样,那么你需要

my ($dev_id, $free_space, $size) = split ' ', $pnames[2];

如果没有空行,则只需将其更改split为工作即可$pnames[1]

于 2013-03-28T10:22:45.517 回答
0

在标量变量中捕获输出并使用正则表达式对其进行检查,如下所示:

my ($DriveName, $FreeSpaceOnDrive, $TotalSpace);
my $pnames = `wmic /node:"IP" /user:"UserName" /password:"password" LogicalDisk Where "DeviceID='H:'" Get DeviceID,FreeSpace,Size`;

if( $pnames =~ m!\s+([\w:]+)\s+(\d+)\s+(\d+)! ) {
   ($DriveName, $FreeSpaceOnDrive, $TotalSpace) = ($1, $2, $3);
}
于 2013-03-28T10:24:02.510 回答