2013-11-21 43 views
2

我遍歷一個充滿子目錄的目錄,查找每個級別的最新文件。通過迭代器將數據行添加到數組

下面的代碼是這樣做的,但我需要能夠將迭代器的每一行/循環添加到數組,以便在最後我可以輸出表格格式的所有數據以便在Excel中使用。

有關我如何做到這一點的任何建議?

$arr = get-childItem -Path "\\network location\directory" | select FullName 
    $res = @() 

    foreach($fp in $arr) 
    { 

    get-childItem -Path $fp.FullName | sort LastWriteTime | select -last 1 Directory, FullName, Name, LastWriteTime 

    } 

回答

0

如果我正確理解你,你只需要將結果輸入到$ res。所以加入| %{$res += $_}應該做的伎倆

$arr = get-childItem -Path "\\network location\directory" | select FullName 
    $res = @() 


    foreach($fp in $arr) 
    { 

    get-childItem -Path $fp.FullName | sort LastWriteTime | select -last 1 Directory, FullName, Name, LastWriteTime | % {$res += $_} 

    } 

    $res | % {write-host $_} 
1

這裏是一個一行對你來說,拆分到多行與反引號轉義字符的可讀性。你可以複製粘貼,它會按原樣運行。 csv文件將在您運行該文件的文件夾中創建。

dir -rec -directory | ` 
    foreach { 
     dir $_.fullname -file | ` 
     sort -Descending lastwritetime | ` 
     select -first 1 
    } | ` 
    export-csv newestfiles.csv 

dirget-childitem的別名。 foreachforeach-object的別名。 %,gcils對於get-childitem甚至更​​短的別名。請注意,我正在避免將數據存儲在數組中,因爲這會使所需的工作翻一番。沒有必要枚舉這些文件夾,然後枚舉數組作爲兩個單獨的操作。

希望這會有所幫助。