【发布时间】:2020-10-06 05:31:53
【问题描述】:
我正在尝试删除 CSV 文件中未列出的所有图像。数据以下面描述的格式进入 CSV。
问题是脚本将删除图像文件夹中的每个文件。我只想从 CSV 文件中删除不包含 SKU 的图像(例如“7-5468-XXX7”)。在这里做什么?
尝试使用这个:
$filestokeep = Import-Csv "C:\Users\example\filestokeep.csv"
$files = Get-ChildItem "C:\Users\example\images\"
$files |
Where-Object Name -notin $filestokeep.sku |
Remove-Item -WhatIf
filestokeep.csv 看起来像:
"sku"
"1-123-X"
"2-123-XXXXX"
"3-562-XXXX"
"4-215-XXXXXX"
"5-56482-XX-X"
"6-45688"
"7-5468-XXX"
"856-54648-X"
C:\Users\example\images\ 包含以下文件:
1-123-X.jpg
2-123-XXXXX.jpg
1-123-X_1.jpg
1-123-X_2.jpg
7-5468-XXX7.jpg
7-5468-XXX7_1.jpg
7-5468-XXX7_2.jpg
6-45688.jpg
Images 文件夹运行后应该是这样的:
1-123-X.jpg
2-123-XXXXX.jpg
1-123-X_1.jpg
1-123-X_2.jpg
6-45688.jpg
链接到我正在尝试实现的原始代码: https://www.reddit.com/r/PowerShell/comments/8f2z0l/remove_files_not_in_csv/
【问题讨论】:
-
Where-Object Name -notin $filestokeep.sku-->Where-Object { $_.BaseName -notin $filestokeep.sku }。此外,为了安全起见,将开关-File添加到 Get-ChildItem cmdlet,这样您就不会处理子文件夹。无论如何,您想要的输出与描述不匹配,因为它还显示 IN csv .. 的文件 -
感谢您的回答。添加
-File确实可以让一切更加安全。
标签: powershell csv directory notin