![Eliminar carpetas que contengan ciertos archivos y conservar otros](https://rvso.com/image/1618362/Eliminar%20carpetas%20que%20contengan%20ciertos%20archivos%20y%20conservar%20otros.png)
Tengo una colección de carpetas que quiero eliminar. Todas estas carpetas contienen un archivo llamado index.html
.
Por ejemplo, esta carpeta debería eliminarse porque contiene un archivo index.html
:c:\folder2\folder3\index.html
Pero bajo la misma carpeta raíz hay carpetas que contienen archivos permitidos como:c:\folder2\folder1\software.rar
Entonces necesito una solución para encontrar todos index.html
los archivos y mantener la carpeta principal como una variable y eliminarla luego.
Probé con esto y hace una buena lista, pero la eliminación no funciona:
dir /ad /b /s %1 >list.txt for /f %%g in (list.txt) do if exist %%g\index.html rd /s /q %%g
Respuesta1
Ventana 10 de 64 bits. PowerShell 5.1
Eliminar sólo directorios que contenganindex.html
Para realizar pruebas, limpie su escritorio. No debería haber ningún directorio con nombre folder2
en su escritorio. folder2
Se crea un directorio llamado en su escritorio.
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
#
Respuesta2
Potencia Shell:
Verboso:
$root = 'c:\TopLevel'
Get-ChildItem -path $root -filter index.html -File -Recurse | Select -expand Directory | Remove-Item -Recurse
version corta:
$root = 'c:\TopLevel'
gci $root index.html -Recurse | select -expand directory | ri -Recurse