Я хочу удалить все файлы из папки, имя которой не включает SKU, перечисленные в CSV.
Это работает, если SKU точно соответствует базе файла, но я также хочу сохранить изображения, которые включают SKU . Например, если SKU - «1-526-2», файлы с именами типа «1-526-2_1.jpg» и «1-526-2_2.jpg» не должны удаляться. Можете ли вы как-нибудь добавить подстановочные знаки вокруг SKU?
Попытка использовать это:
$filestokeep = import-csv "C:\Users\exmaple\csv.csv" -Header sku).sku
$files = "C:\users\folder"
$data = Get-ChildItem $files -Recurse |
Where-Object {$filestokeep -notcontains $_.basename} |
Remove-Item -WhatIf
Пример CSV:
"SKU"
"1-526-2"
"2-1234"
"1-6435"
Примеры файлов в папке:
1-123.jpg
1-123_1.jpg
1-526-2.jpg
1-526-2_1.jpg
1-6435_2.jpg
2-1234.jpg
5-16547-5.jpg
Результат сейчас:
"Remove File" on target "C:\Users\folder\1-123.jpg".
"Remove File" on target "C:\Users\folder\1-123_1.jpg".
"Remove File" on target "C:\Users\folder\1-526-2_1.jpg".
"Remove File" on target "C:\Users\folder\1-6435_2.jpg".
"Remove File" on target "C:\Users\folder\5-16547-5.jpg".
Результат должен быть:
"Remove File" on target "C:\Users\folder\1-123.jpg".
"Remove File" on target "C:\Users\folder\1-123_1.jpg".
"Remove File" on target "C:\Users\folder\5-16547-5.jpg".