我需要找到在特定位置包含单词“ test”或“ Test”或“ TEST”的每个文件夹的路径。文件树很大。
这将删除包含“ test”的每个文件夹。我试过使用 findstr函数。
findstr /i "test"
我希望获取包含“测试”的每个文件夹路径
答案 0 :(得分:1)
可以使用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推向前进,微软称这是未来,那么类似的事情可能会奏效。当您确定将删除正确的目录后,请从-WhatIf
cmdlet中删除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 shell运行。
powershell -NoLogo -NoProfile -File Remove-TestDirectories.ps1