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 に答える