powershell - 如何在Powershell中删除文件然后删除目录?
问题描述
我试图找到一种方法来处理这样的任务:
有几个目录名称不同。它们包含 2 个文件 hi.exe 和 newScript.bat 我需要编写脚本,在当前目录及其后代中查找包含这两个文件的文件夹,删除它们,然后删除包含目录。
我找到了一种删除这些文件的方法以及如何删除空目录。有没有办法在删除这些文件之前链接目录名称?还是有什么其他方式?
我找到了一种删除文件的方法,但我需要以某种方式保存它们的路径,然后删除一个文件夹:
Remove-Item -path H:* -include hi.exe , newScript.bat -recurse -whatif
我也可以删除空文件夹,但这不是我正在寻找的解决方案。
更新:为什么 - 并且它不起作用?但它适用于 -or? PowerShell执行
解决方案
如果你走这条路,那就是一个开始。
Get-ChildItem -Path C:\ -Recurse | Where-Object {$_.Name -eq "hi.exe" -or $_.Name -eq "newScript.bat" } | foreach { $_.Directory }
您可以删除它们所在的目录,而不是将目录名称发送到控制台。
编辑:
由于我错过了“包含两个文件”,我建议这样做。随意将它写成单行,但我是一步一步做的,所以路上有“检查点”。
$potensial_files = Get-ChildItem -Path C:\ -File -Recurse | Where-Object { @("calc.exe", "cmd.exe").Contains($_.Name) }
$potensial_files.Directory.FullName | select –unique | foreach {
$dir = $_
$files = $potensial_files | Where-Object { $_.Directory.FullName -eq $dir }
if(($files | Measure-Object).Count -eq 2)
{
Write-Host "$dir contains $files"
}
}
而且我确信这可以写得更短,但是“运行一次”脚本有什么意义呢?
推荐阅读
- python - 当从它创建的另一个数据框的列发生更改时,熊猫数据框的列名会更改
- python - 使用 Python 从不包含 'target="_blank"' 的 url 列表中提取链接
- ios - 获取 CodingKeys 键值
- html - 将 3D 悬停效果应用于多个 div
- php - 无法使用 Laravel Eloquent 将所有数据从一个表发送到另一个表
- flutter - 带导航的 Flutter CircularprogressIndicator
- nlp - spaCy Doc.sents 未正确拆分
- python - Django密码重置问题
- flutter - 如何更新列表中的小部件
- c# - 如何知道图像在 OCR 之前是否颠倒?如果需要变换或校正方向,如何知道 90/180 变换是否正确?