我正在尝试找出磁盘卷名。我的代码是:
$diskVolume = array('m','r');
foreach ($diskVolume as $volume) {
echo $volume.' ';
$cmd = 'fsutil fsinfo volumeinfo '.$volume.':';
exec( $cmd,$getVolumeName);
echo $getVolumeName[0].'<br /> ';
}
但我的代码似乎只有第一项 m的音量名称而无法获得 r 。换句话说,循环只获取第一项的信息。 ,
非常感谢!!
有关fsutil的信息: fsutil
答案 0 :(得分:0)
exec
第二个参数通过引用接受数组:
string exec(string $ command [,array&amp; $ output [,int&amp; $ return_var]])
如果$output
已经是一个数组,它将不会重新初始化数组,而是追加到它。每个例子:
$output = array('foo');
exec('who', $output);
var_dump($output);
收率:
array(2) {
[0]=>
string(3) "foo"
[1]=>
string(43) "netcoder tty7 2011-01-17 17:52 (:0)"
}
改为自己重新初始化:
$diskVolume = array('m','r');
foreach ($diskVolume as $volume) {
$getVolumeName = null; // reinitialize here
echo $volume.' ';
$cmd = 'fsutil fsinfo volumeinfo '.$volume.':';
exec( $cmd,$getVolumeName);
echo $getVolumeName[0].'<br /> ';
}
答案 1 :(得分:0)
<?php
$diskVolume = array('m','r');
foreach ($diskVolume as $volume) {
echo $volume."\n";
$cmd = 'echo '.$volume;
exec($cmd,$getVolumeName);
}
echo print_r($getVolumeName, true)."\n\n";
上面的代码执行这两个命令,并在结尾处将BOTH命令的结果作为SINGLE数组输出。您只是查看数组中的第一个条目,但exec传递给它的输出变量CONCATENATES到现有数组上,如果您传递的变量已经有值。