簡體   English   中英

如何在Perl中從DOS獲取目錄列表?

[英]How can I get a directory listing from DOS in Perl?

我需要從作為運行時參數傳遞給Perl腳本的路徑中獲取目錄名稱。 這是我正在使用的代碼:

$command ="cd $ARGV[0]";
system($command);

$command="dir /ad /b";
system($command);
@files=`$command`;

但是它仍然返回我正在運行此Perl腳本的目錄內的目錄名稱。 簡而言之,如何從目標目錄獲取目錄名稱,該目錄的路徑已傳遞到此Perl腳本?

從您要在問題帖子中嘗試做的事情來判斷

$dir = $ARGV[0];
chdir($dir);
while(<*>){
 chomp;
 # check for directory;
 if ( -d $_ ) {
    print "$_\n" ;
 }
}

在命令行上

c:\test> perl myscript.pl c:\test

還有其他列出目錄的方法。 從文檔中看到這些

  1. perldoc -f opendirperldoc -f readdir

  2. perldoc perlopentut

  3. perldoc -f glob

  4. perldoc perlfunc (查看用於測試文件的運算符。 -x-d-f等)

您的問題是通過“系統”運行“ cd”不會更改perl進程的工作目錄。 為此,請使用“ chdir”功能:

chdir($ARGV[0]);

$command="dir /ad /b";
system($command);
@files=`$command`;

這也應該工作
$command = "dir /ad /b $ARGV[0]" ;

請使用File :: DosGlob (在perl v5.5之前的版本開始,一直存在該內核)以避免類似跳過與/^\\./匹配的文件之類的陷阱。

perl -MFile::DosGlob=glob -lwe "chdir 'test_dir'; print for grep {-d} <*>"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM