使用 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
来阻止它无休止地这样做。
所以我使用 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
来阻止它无休止地这样做。