递归列出文件路径以使用分隔符分隔excel列

时间:2015-10-11 20:17:49

标签: powershell

我正在尝试使用分隔分隔符(选择管道符)递归导出目录的所有.jpg文件路径,以便每个子文件夹的文件内容(.jpg文件路径)在列中列为新单元格。所以想象一下我们在目录中:

X:\My\Files

此文件夹包含以下文件夹和文件

Folder1\img1.jpg
Folder1\img2.jpg
Folder2\img3.jpg
Folder2\img4.jpg

我希望输出

X:\My\Files\Folder1\img1.jpg|X:\my\Files\Folder1\img2.jpg ## 1st cell of csv column
X:\My\Files\Folder2\img3.jpg|X:\my\Files\Folder2\img4.jpg ## 2nd cell of csv column

到目前为止我的命令

(Get-ChildItem -Path X:\My\Files -Include *.jpg -Recurse) -join "|" | Add-Content -path C:\Users\Anon\Documents\file.csv | Select-Object FullName

这能够让我用管道分隔符分隔所有文件路径,但只能进入一个无用的单元格。我需要它来尊重上面列出的目录结构。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您希望按特定条件对项目进行分组,则必须使用Group-Object,在这种情况下,条件为DirectoryName

一旦它们被分组,我们就可以使用任何分隔符将它们连接起来并将结果导出到csv。

在下面的命令中,我们创建一个哈希表,然后只提取哈希表中的值

$hash = Get-ChildItem -Path $path -Include *.jpg -Recurse | 
  Group-Object directoryname -AsHashTable -AsString

$hash.GetEnumerator() | 
  ForEach-Object { [PSCustomobject]@{Path = $_.value.fullname -join '|'}} |
    Export-Csv -Path C:\temp\paths.csv -NoTypeInformation