使用 Powershell 在流式传输电影时无限循环删除文件

Endless loop to delete files while streaming movie using Powershell

所以我使用 Emby 将媒体流式传输到我的电视。我正在观看 4K 扩展的 Lotr,显然,Emby 在流式传输这种大小的文件时创建了价值 30gb 的转码数据。所以大约30分钟后,电影停止了,因为我的硬盘已满。

我创建了一个脚本,用于删除该特定文件夹中超过 5 分钟的文件:

$limit = (Get-Date).AddMinutes(-5)
$path = "C:\Users\*myuser*\AppData\Roaming\Emby-Server\programdata\transcoding-temp"

Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt 
$limit } | Remove-Item -Force

现在,这工作正常,但我想将其自动化,否则我必须每 30 分钟手动 运行 一次。我试着把它放在一个无限循环中,但这似乎并没有删除文件:

$limit = (Get-Date).AddMinutes(-5)
$path = "C:\Users\*myuser*\AppData\Roaming\Emby-Server\programdata\transcoding-temp"

while($true){
    Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt 
    $limit } | Remove-Item -Force
}

有人可以向我解释为什么循环不起作用以及什么是合适的解决方案?

它不起作用,因为 $limit 在开始时计算了一次。您需要为循环的每次迭代更新 $limit。我会投入 Start-Sleep 300 来阻止它无休止地这样做。