我正在尝试使用分隔分隔符(选择管道符)递归导出目录的所有.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
这能够让我用管道分隔符分隔所有文件路径,但只能进入一个无用的单元格。我需要它来尊重上面列出的目录结构。
有什么建议吗?
答案 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