
削除したいフォルダーのコレクションがあります。これらのフォルダーにはすべて、 という名前のファイルが含まれています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