You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现保留.mobi/.epub、删除其余同名电子书脚本修改问询

电子书文件夹清理脚本调整方案

原脚本的问题是采用了单优先级互斥保留规则,会删除非最高优先级的其他保留格式文件。你之前修改失败是因为-contains操作符的使用逻辑反了:该操作符是数组在前,单个值在后,你可以直接用更符合直觉的-in操作符,同时调整判断逻辑即可满足需求。

修改后的完整脚本如下:

# 定义需要保留的后缀数组
$keepExtensions = @(".epub", ".mobi")
# 目标文件夹路径,替换为你自己的文件夹路径
$targetDir = "C:\Path\To\Your\Ebook\Folder"

# 获取所有非文件夹的文件,按基础名分组
$fileGroups = Get-ChildItem -Path $targetDir -File | Group-Object -Property BaseName

foreach ($group in $fileGroups) {
    # 检查当前基础名的文件组里是否存在需要保留的后缀
    $hasRetainExt = $group.Group.Extension | Where-Object { $_ -in $keepExtensions }
    if ($hasRetainExt) {
        # 存在保留后缀的文件,删除所有非保留后缀的同基础名文件
        $group.Group | Where-Object { $_.Extension -notin $keepExtensions } | Remove-Item -Force
        # 如果想要先测试不实际删除,把上面一行换成下面这行,先输出待删除的文件列表
        # $group.Group | Where-Object { $_.Extension -notin $keepExtensions } | Select-Object FullName
    }
    # 没有保留后缀的文件,直接跳过不处理,符合规则2
}

注意事项

  • 首次运行前建议先注释掉Remove-Item那行,取消注释输出待删除文件的行,确认待删文件无误后再执行实际删除操作,避免误删
  • 脚本默认不处理子文件夹,如果需要递归处理子文件夹,给Get-ChildItem加-Recurse参数即可

内容的提问来源于stack exchange,提问作者Al Howarth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:09:03