我假設你需要列出某個文件夾下的所有文件。您可以使用Get-ChildItem -Recurse
爲代替robocopy
,用Where-Object
只過濾文件然後選擇屬性只有你想Select-Object
:
Get-ChildItem .\Documents -Recurse | Where-Object {!$_.PsIsContainer}| Select-Object -property LastWriteTime,Length,FullName | Export-Csv aaa.csv
如果你需要使用robocopy
您可以嘗試解析它的輸出:
robocopy .\Documents\ NULL /L /S /V /E /BYTES /FP /NC /NDL /XJ /TS /R:1 /W:2 /njh /njs | Where-Object {$_ -match '^\s*([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.*?)\s*$'} | ForEach-Object { new-object PSObject -property @{Length=$matches[1];Date=$matches[2];Time=$matches[3];Name=$matches[4]}} | Export-Csv aaa.csv
這是醜陋的,但應該做你需要的。我加入/njh
和/njs
參數到命令行抑制robocopy
的頁眉和頁腳,Where-Object
除去非匹配(空)線和ForEach-Object
創建具有使用由Where-Object
使用-match
操作者創建$Matches
命名屬性的對象。
在您的案例中,'Out-File'只是將'robocopy'的輸出寫入文件,所以除非'robocopy'格式正確,否則您將無法獲得正確的CSV輸出。 'Export-Csv'需要對象列表作爲輸入,而robocopy的輸出是字符串列表。我建議你先詳細描述一下你想要達到的細節。 – n0rd