我需要帮助开发脚本来执行以下操作。
我在我的c:\ recorded tv文件夹中的子目录中记录了我的电视.WTV文件。 例如: c:\录制电视\黑名单\ c:\录制电视\蝙蝠侠\ 等
我想要一个脚本,我可以通过任务调度程序安排删除相应子目录中的旧wtv文件,并根据记录的日期将4个最新的wtv文件保存在各自的子目录中。
这可能吗?
答案 0 :(得分:0)
根据Keep x number of files and delete all others - Powershell
上类似的SO帖子改编了以下解决方案$path = "c:\recorded tv"
$keep = 4
$subdirs = Get-ChildItem -Path $path | ?{ $_.PSIsContainer } | select-object FullName
foreach ($dir in $subdirs) {
$files = Get-ChildItem -Path $dir.FullName | ?{-not $_.PsIsContainer}
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime | Select-Object -First ($files.Count - $keep) | Remove-Item -Force
}
}
答案 1 :(得分:0)
批量解决方案
@echo off
setlocal enableextensions disabledelayedexpansion
set "root=c:\recorded tv"
set "fileType=.wtv"
set "keep=4"
for /d %%d in ("%root%\*") do for /f "skip=%keep% delims=" %%a in (
'dir /b /o-d /a-d "%%~fd\*%fileType%"'
) do echo del "%%~fd\%%~a"
代码执行两个for
循环:
for %%d
枚举指定根目录下的文件夹。
for %%a
对正在处理的文件夹执行dir
命令,以反向日期顺序检索其中的文件列表。跳过前n个文件(较新的文件),对于其余文件,执行del
命令。
文件删除操作仅回显到控制台,如果输出正确,请删除前缀为echo
的{{1}}命令