【发布时间】:2017-03-02 23:19:25
【问题描述】:
我有一个包含 .jpg 文件的文件夹。我将这些与访问数据库中的产品相关联。产品来源之一提供了这些 .jpg 文件,但它们不允许您轻松下载仅当前使用的图片。因此,我找到了一个 PowerShell 脚本来删除我不需要的文件。
$exclusions = Get-Content C:\Users\office\Desktop\ExcludedPhotos.txt
dir -rec M:\PhotoDirectory\PhotoFolder | Where-Object {$exclusions -notcontains $_.name } | Remove-Item
归功于@x0n Powershell script to delete files not specified in a list
而且效果很好!但问题是它需要很长时间,我有超过 180,000 个项目要搜索和删除。所以我想制作一个进度条,让我知道我在这个过程中走了多远。
所以经过一番搜索,我找到了一篇名为“使用进度条”的文章
问题是我不知道如何将两者混合在一起,但是我在这里做了一个尝试:
$exclusions = Get-Content C:\Users\office\Desktop\ExcludedPhotos.txt
1..100 | foreach-object {
Write-Progress -Activity "Deleting Files" -Status "$_ %" -Id 1 -PercentComplete $_ -CurrentOperation "Deleting File $_"
dir -rec M:\PhotoDirectory\PhotoFolder | Where-Object {$exclusions -notcontains $_.name } | Remove-Item
}
然而,这似乎比原始脚本花费的时间更长,我不知道它是如何工作的,当我只需要删除 10-15 个文件时,我正在测试它。
我很可能缺少一些非常基本的东西但我真的很感激能帮助我理解这一点。
这里我添加了一个截图:
【问题讨论】:
标签: powershell progress-bar delete-file