Удалить папки с определенным шаблоном именования в пути в Windows
У меня есть каталог, который содержит исполняемый файл.exe и необходимые входные файлы. Для каждого отдельного запроса создается отдельный каталог (в формате Output_) по тому же пути, и соответствующие выходные файлы направляются туда.
Теперь мне нужно очистить старые выходные каталоги. Может кто-нибудь объяснить, как добиться этого в Windows. Я просмотрел документацию по файлам forfiles и другие ответы о переполнении стека, но не нашел никакой информации о предоставлении шаблона имени для папок, которые нужно удалить, хотя эта опция доступна для удаления файла.
Я пытаюсь код ниже Но я хочу также указать шаблон папки, чтобы не удалять другие файлы.
forfiles /p "C:\work\Analysis\" /d +7 /c "cmd /c IF @isdir == TRUE rd /S /Q @path"
2 ответа
Ниже команда сделала работу за меня. /M также работает с каталогами. Благодаря ответу JJS на https://superuser.com/q/764348
forfiles /P C:\work\Analysis\ /M guid_* /d +5 /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
Вот пример в Powershell
$Now = Get-Date
$Hours = "4"
$TargetFolder = **!Folder in which old data exists!**
$LastWrite = $Now.AddHours(-$Hours)
$Folders = get-childitem -path $TargetFolder |
Where {$_.psIsContainer -eq $true} |
Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($Folder in $Folders)
{
write-host "Deleting $Folder" -foregroundcolor "Red"
Remove-Item $TARGETFOLDER\$Folder -recurse -Force
}