2

Perl で置き換えられたドライブ文字を取得する必要があります。誰か親切に助けてくれませんか?$ENV{SYSTEMDRIVE} は機能しません。置き換えられたものではなく、実際の論理ドライブ文字が表示されます。

4

4 に答える 4

3

Win32::FileOpをお探しですか?

于 2008-12-15T07:42:20.347 に答える
2
 perl -e 'use Cwd; print( substr(getcwd(),10,1 )) ' # prints 10th char.
于 2008-12-15T09:43:17.483 に答える
0

自分でやりたい場合は、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

これを行うには、次のように、subst'ed 出力を返す関数が必要です。

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:\

subst'ed ドライブが 1 つしかない私のシステムでは。

于 2008-12-15T07:45:39.607 に答える