Список каталогов может быть сгенерирован и повторен с использованием цикла FOR
. Когда вы убедитесь, что правильные каталоги будут удалены, удалите echo
из строки, содержащей rmdir
.
@echo off
pushd \
for /f "delims=" %%a in ('dir /s /b /a:d "*test*"') do (
echo if exist "%%~a" (rmdir /s /q "%%~a")
)
popd
Если вы хотите продвинуться вперед в Powershell, который, как заявляет Microsoft, является будущим, что-то подобное может сработать. Когда вы убедитесь, что правильные каталоги будут удалены, удалите -WhatIf
из командлета Remove-Item
.
=== Remove-TestDirectories.ps1
$previousdir = ":" # set to impossible filesystem name
Get-ChildItem -Directory -Recurse -Path "C:\" -Filter "*test*" -Force -ErrorAction SilentlyContinue |
Sort-Object -Property FullName |
ForEach-Object {
#"{0} and {1} and {2}" -f @($previousdir, $_.FullName, $_.FullName.StartsWith($previousdir))
if (-not $_.FullName.StartsWith($previousdir)) {
$previousdir = $_.FullName
if (Test-Path -Path $_.FullName) { Remove-Item -Path $_.FullName -Recurse -WhatIf}
}
}
Это можно запустить из оболочки cmd.exe.
powershell -NoLogo -NoProfile -File Remove-TestDirectories.ps1