Eu tenho uma coleção de pastas que desejo excluir. Todas essas pastas contêm um arquivo chamado index.html
.
Por exemplo, esta pasta deve ser removida porque contém um arquivo index.html
:c:\folder2\folder3\index.html
Mas na mesma pasta raiz existem pastas que contêm arquivos permitidos como:c:\folder2\folder1\software.rar
Então preciso de uma solução para encontrar todos index.html
os arquivos e manter a pasta pai como uma variável e excluí-la depois.
Eu testei com isso e dá uma boa lista, mas a exclusão não está funcionando:
dir /ad /b /s %1 >list.txt for /f %%g in (list.txt) do if exist %%g\index.html rd /s /q %%g
Responder1
Janela 10 de 64 bits. PowerShell 5.1
Exclua apenas diretórios que contenhamindex.html
Para testar, limpe sua área de trabalho. Não deve haver nenhum diretório nomeado folder2
em sua área de trabalho. Um diretório nomeado folder2
é criado em sua área de trabalho.
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
#
Responder2
PowerShell:
Verboso:
$root = 'c:\TopLevel'
Get-ChildItem -path $root -filter index.html -File -Recurse | Select -expand Directory | Remove-Item -Recurse
versão curta:
$root = 'c:\TopLevel'
gci $root index.html -Recurse | select -expand directory | ri -Recurse