如何用PowerShell脚本删除子文件夹文件并排除根目录
解决PowerShell脚本误删根目录文件的问题
你的脚本会删除根目录文件,核心原因是-Recurse参数会遍历当前路径下所有层级的文件,包括根目录本身。只需添加一个过滤条件,就能只处理子文件夹里的文件,同时保留排除.ps1脚本的逻辑。
修改后的脚本如下:
$rootPath = Get-Location # 仅筛选子文件夹中的文件(排除根目录),同时排除.ps1脚本 $targetFiles = Get-ChildItem -File -Recurse | Where-Object { $_.DirectoryName -ne $rootPath -and $_.Extension -ne '.ps1' } $deletedCount = $targetFiles.Count # 执行删除操作 $targetFiles | ForEach-Object { $_.Delete() } Write-Host "已在路径 '$rootPath' 的所有子文件夹中删除了 '$deletedCount' 个文件!" pause
关键修改说明:
- 用
Where-Object {$_.DirectoryName -ne $rootPath}过滤掉根目录下的文件,仅保留子文件夹内的文件 - 将文件筛选与计数合并为一步,避免原脚本中计数包含根目录文件的错误
- 直接通过
$targetFiles.Count获取实际删除的文件数量,无需手动减1(已通过扩展名过滤排除脚本自身)
内容的提问来源于stack exchange,提问作者Arktikus
相关产品推荐
相关产品推荐

