2008-12-15 75 views

回答

2

感謝所有,我終於解決它通過更簡單的方法 - 通過使用GETCWD命令來獲得當前工作目錄,然後我用從它的輸出前兩個字母 - 這麼簡單的:-)

use Cwd; 

my $driveletter = substr(getcwd, 0, 2); 
3

你是在找Win32::FileOp

+0

「無法找到Win32/FileOp.pm「等,但我不知道它會幫助(無論如何,謝謝你的努力) 確切地說 - 我使用的是Windows XP。 – Dungeo 2008-12-15 08:10:55

+0

您必須先安裝模塊。 – 2008-12-15 08:20:25

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

我的系統這對只有一個子驅動器。

相關問題