PowerShell脚本开发:查找指定文件夹并删除其中特定扩展名文件
整合PowerShell脚本实现指定文件夹的文件清理
需求说明
需要找到所有名为Draft Materials的文件夹,在这些文件夹内删除PDF、BMP、AVI、MOV等导出产物文件,保留INDD、PRPROJ、AEP等源文件,用于归档磁盘空间清理。
整合后的完整脚本
# 定义可配置变量 $rootPath = "D:\" # 要搜索的根驱动器/目录 $targetFolderName = "Draft Materials" # 目标文件夹名称 # 要删除的文件扩展名(不带点,多个用逗号分隔) $deleteExtensions = @("pdf", "bmp", "avi", "mov") # 若需通过保留的扩展名反向筛选,可启用下面的$keepExtensions,同时注释上面的$deleteExtensions # $keepExtensions = @("indd", "prproj", "aep") # 查找所有目标文件夹 $targetFolders = Get-ChildItem -Path $rootPath -Filter $targetFolderName -Recurse -Directory -Force # 遍历每个目标文件夹执行清理 foreach ($folder in $targetFolders) { Write-Host "正在清理文件夹:$($folder.FullName)" -ForegroundColor Cyan # 方式1:删除指定扩展名的文件 Get-ChildItem -Path $folder.FullName -Include "*.$($deleteExtensions -join ",*.")" -Recurse -Force | ForEach-Object { Write-Host "删除文件:$($_.FullName)" Remove-Item -Path $_.FullName -Force } # 方式2:保留指定扩展名,删除其余文件(二选一) # Get-ChildItem -Path $folder.FullName -Exclude "*.$($keepExtensions -join ",*.")" -Recurse -Force -File | ForEach-Object { # Write-Host "删除文件:$($_.FullName)" # Remove-Item -Path $_.FullName -Force # } } Write-Host "清理操作完成" -ForegroundColor Green
关键步骤说明
- 变量配置:将根路径、目标文件夹名、扩展名规则设为变量,方便后续快速调整参数。
- 定位目标文件夹:通过
Get-ChildItem的-Directory参数精准筛选文件夹,-Recurse实现全目录递归搜索,-Force包含隐藏文件夹。 - 两种清理逻辑:
- 正向筛选:直接指定要删除的扩展名,用
-Include匹配后删除; - 反向筛选:指定需保留的扩展名,用
-Exclude排除后删除剩余文件。
- 正向筛选:直接指定要删除的扩展名,用
- 操作日志:通过
Write-Host输出实时操作路径,便于跟踪执行过程。
注意事项
- 测试阶段建议注释
Remove-Item行,仅执行文件查找和日志输出,确认目标文件无误后再执行删除。 -Force参数会删除只读文件,使用前需确认这些文件确实无需保留。
内容的提问来源于stack exchange,提问作者tnpir4002
相关产品推荐
相关产品推荐

