Если вы хотите сделать это самостоятельно, вы можете захватить выходные данные команды subst и обработать ее, поскольку она выводит все текущие замещенные диски.
SUBST [drive1: [drive2:]path]
SUBST drive1: /D
drive1: Specifies a virtual drive to which you want to assign a path.
[drive2:]path Specifies a physical drive and path you want to assign to
a virtual drive.
/D Deletes a substituted (virtual) drive.
Type SUBST with no parameters to display a list of current virtual drives.
C:\Documents and Settings\Administrator\My Documents>subst r: c:\bin
C:\Documents and Settings\Administrator\My Documents>subst
R:\: => C:\bin
Для того, чтобы сделать это, вам нужна функция для возврата вывода с подстановкой, как показано ниже:
sub get_drive {
my $drv = shift;
my $ln;
$drv = substr($drv,0,1);
open (IN, "subst |");
while ($ln = <IN>) {
chomp ($ln);
if ((substr($ln,0,1) eq $drv) && (substr($ln,1,6) eq ":\\: =>")) {
close (IN);
return substr($ln,8);
}
}
close (IN);
return $drv . ":\\";
}
print get_drive ("R:") . "\n";
print get_drive ("S:") . "\n";
Это выводит:
C:\bin
S:\
в моей системе, которая имеет только один замененный диск.