在我的职业中,我从后来在本地存储中提取的“外来”PC制作法庭图像。使用线程删除具有特定扩展名的文件忽略特定日期的文件
要清理数据,我希望删除所有与我无关的文件。 (不限于:音频,电影,系统文件...) 由于我们讲的是多TB数据,我希望能够使用线程,特别是因为我的存储全部是闪存,磁盘上的限制是问题少一些。
为了在初始手动运行后加快处理速度,我希望脚本排除大于1日的文件(因为我已经通过手动运行完成了那一个)。
是我到目前为止有:
$IncludeFiles = "*.log", "*.sys", "*.avi", "*.mpg", "*.mkv", ".mp3", "*.mp4",
"*.mpeg", "*.mov", "*.dll", "*.mof", "*.mui", "*.zvv", "*.wma",
"*.wav", "*.MPA", "*.MID", "*.M4A", "*.AIF", "*.IFF", "*.M3U",
"*.3G2", "*.3GP", "*.ASF", "*.FLV", "*.M4V", "*.RM", "*.SWF",
"*.VOB"
$ScriptBlock = {
Param($mypath = "D:\")
Get-ChildItem -Path $mypath -Recurse -File -Include $file | Where-Object {
$_.CreationTime -gt (Get-Date).AddDays(-1)
}
foreach ($file in $IncludeFiles) {
Start-Job -ScriptBlock $ScriptBlock -ArgumentList $file
}
Get-Job | Wait-Job
$out = Get-Job | Receive-Job
Write-Host $out
只是不工作的事情是,它只查看文件“年轻化”,比1 天的限制。如果我没有它运行脚本,它似乎完美地工作。 (因为它给我一个带有我想要删除的扩展名的文件列表)
您发布的代码不完整。该脚本块永远不会关闭,'$ file'未定义。另外,将一个命令放在一个scriptblock中并开始工作并不会加速任何事情。您需要拆分该命令,以允许您将耗时的操作同时作为多个作业运行。 –
我想将每个扩展用作一个不同的线程,因为它将搜索所有数据一个扩展名,然后转到下一个。 – Michael