我有一组想要删除的文件夹。所有这些文件夹都包含一个名为 的文件index.html
。
例如,应该删除此文件夹,因为它包含一个文件index.html
:c:\folder2\folder3\index.html
但在同一根文件夹下,有一些文件夹包含允许的文件,例如:c:\folder2\folder1\software.rar
所以我需要一个解决方案来找到所有index.html
文件并将父文件夹保留为变量,然后将其删除。
我用这个测试了它并且它生成了一个很好的列表但是删除不起作用:
dir /ad /b /s %1 >list.txt for /f %%g in (list.txt) do if exist %%g\index.html rd /s /q %%g
答案1
Windows 10 64 位。PowerShell 5.1
仅删除包含以下内容的目录index.html
folder2
为了测试,请清除您的桌面。您的桌面上应该没有名为的目录。folder2
您的桌面上会创建一个名为的目录。
pushd $HOME\Desktop;ni -itemtype directory "folder2\folder3", "folder2\folder1">$null;ni -itemtype file "folder2\folder3\index.html", "folder2\folder1\software.rar">$null;explorer .\folder2;cls
Read-Host "
Test files have been created on your desktop. See explorer.
Press enter key to continue"
Get-ChildItem .\folder2\*\index.html | ForEach-Object {
remove-item $_.directoryname -recurse
}
explorer .\folder2;cls
Read-Host "
Directories containing index.html have been deleted. See explorer.
Press enter key to delete all test files"
ri (".\folder2") -recurse
popd
#
答案2
电源外壳:
详细:
$root = 'c:\TopLevel'
Get-ChildItem -path $root -filter index.html -File -Recurse | Select -expand Directory | Remove-Item -Recurse
简洁版本:
$root = 'c:\TopLevel'
gci $root index.html -Recurse | select -expand directory | ri -Recurse